Android实战之复用一返回导航栏

在实际项目开发中,不少界面元素都是类似的,我们可以提取出来,根据具体需求加以稍微的改变就可以实现复用,实现了功能同时也减少了代码量。

     比如,返回导航栏就是非常通用的界面模块,我们可以定义一个xml,包含返回按钮,以及textview标签显示当前页面的描述。然后,在需要使用返回导航栏目的地方include进去就可以了。

    复用的xml代码很简单,就是一个button和textview元素。 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="@dimen/padding44"
                android:background="@color/orange" >

    <Button
        android:background="@drawable/navi_btn_selector"
        android:id="@+id/btn_navitest_back"
        android:layout_centerVertical="true"
        android:layout_marginLeft="@dimen/padding15"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"


        android:textColor="@color/white"
        android:textSize="@dimen/text_size_15" />

    <TextView
        android:typeface="sans"
        android:id="@+id/navi_title_test"
        android:layout_centerInParent="true"
        android:textColor="@color/white"
        android:textSize="@dimen/text_size_14"
        android:text="主页"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</RelativeLayout>
他的界面效果如图:

                                 

那么如何在页面使用复用的xml并让返回按钮生效、以及让“主页”更加业务场景发生改变呢。很简单,先在页面xml中包含进通用的xml,然后在Activity中通过findViewById找到他们,然后实例化,并给按钮设置监听器,给textView设置文字setText。例如:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/background_color"
    android:orientation="vertical">

    <include layout="@layout/a_test_custom_navi_bar"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/padding2"
        android:background="@color/white"
        android:clickable="true"
        android:orientation="horizontal"
        android:padding="4dp">

        <ImageView
            android:id="@+id/iv_state_detail"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:src="@mipmap/fail"/>

代码没写完整,其实就在顶部include进去就好。  然后是Activity中的代码:

		setContentView(R.layout.state_details_activity);
		tv_topic_navi = (TextView)findViewById(R.id.navi_title_test);
		tv_topic_navi.setText(R.string.topic_detail);
		tv_topic_navi.setTextSize(17);

		btn_topic_back = (Button)findViewById(R.id.btn_navitest_back);

		btn_topic_back.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				StateItemDetailActivity.this.finish();
			}
		});






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章