巧用公共标题栏:避免每次activity都得写标题栏

注:采用父类继承法避免每次建activity都得include标题栏并初始化标题栏各个操作
先看下MainActivity代码和xml:
package com.yqy.yqy_commontitlebar;import android.view.View.OnClickListener;public class MainActivity extends CommonActivity {@Overridepublic void init() {setTitleAndContentLayoutId("首页", R.layout.activity_main);}@Overridepublic OnClickListener getBackOnClickLisener() {return null;}}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" /></RelativeLayout>


代码简洁,并且有设置标题栏文字、标题栏以为的布局和随心所欲的返回事件 这些都归功于CommonActivity:
package com.yqy.yqy_commontitlebar;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.TextView;public abstract class CommonActivity extends FragmentActivity {private TextView leftTv, centerTv, rightTv;@Overrideprotected void onCreate(Bundle arg0) {super.onCreate(arg0);setContentView(R.layout.common_title_bar);leftTv = (TextView) findViewById(R.id.leftTv);centerTv = (TextView) findViewById(R.id.centerTv);rightTv = (TextView) findViewById(R.id.rightTv);if (getBackOnClickLisener() == null) {leftTv.setOnClickListener(new BackOnClickLisener());} else {leftTv.setOnClickListener(getBackOnClickLisener());}init();}/** * 设置标题和主布局 * @author yqy * @date 2016-1-7 下午3:44:55 * @param title * @param layoutId */public void setTitleAndContentLayoutId(String title, int layoutId) {getLayoutInflater().inflate(layoutId,(ViewGroup) centerTv.getParent().getParent());centerTv.setText(title);}public abstract void init();public abstract OnClickListener getBackOnClickLisener();class BackOnClickLisener implements OnClickListener {@Overridepublic void onClick(View arg0) {finish();}}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {leftTv.performClick();return true;}return super.onKeyDown(keyCode, event);}}

OnCreare方法初始化标题栏布局和点击事件 setTitleAndContentLayoutId(String title, int layoutId)用来设置标题栏的标题文字和主要布局 有两个方法前面带有 public abstract 修饰符目的是让子类复写这些 父类调用
标题栏布局贴上:
<?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:orientation="vertical" >    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="48dp" >        <TextView            android:id="@+id/leftTv"            android:layout_width="40dp"            android:layout_height="35dp"            android:layout_alignParentLeft="true"            android:layout_centerVertical="true"            android:gravity="center"            android:text="返回" />        <TextView            android:id="@+id/centerTv"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerHorizontal="true"            android:layout_centerVertical="true"            android:text="标题"            android:textSize="20sp" />        <TextView            android:id="@+id/rightTv"            android:layout_width="40dp"            android:layout_height="35dp"            android:layout_alignParentRight="true"            android:layout_centerVertical="true"            android:gravity="center"            android:text="编辑" />    </RelativeLayout>    <View android:layout_width="match_parent"        android:layout_height="0.5dp"        android:background="@android:color/background_dark"/>    </LinearLayout>

以上的例子虽然都是文字的按钮 根据自己的需要稍加改动就可以
最后大喊一声:开源万岁!

更多相关文章

  1. Android设置程序最小运行的堆内存
  2. Android(安卓)studio从菜鸟到高手--第一季
  3. android UI进阶之自定义组合控件
  4. Android(安卓)settings中SwitchPreference的简单处理
  5. Android使用HttpURLConnection进行POST请求,向服务器上传数据
  6. Android(安卓)Material Design 控件常用的属性
  7. (笔记)RecyclerView item按下变色效果 没有生效
  8. android文件选择器filePicker
  9. 某android平板项目开发笔记----aChartEngine图表显示(2)

随机推荐

  1. Android开发实战一之搭建开发环境-附测试
  2. 在Android上使用ZXing识别条码 二次开发
  3. [持续更新]Android(安卓)细节,小技巧 详
  4. android隐藏标题栏和状态
  5. Android(安卓)最佳实践
  6. Android(安卓)Bitmap 透明度(Picture 透
  7. [Android(安卓)Memory] Android(安卓)Lin
  8. Android(安卓)多线程延迟(sleep)
  9. Android(安卓)Activity之间经典切换动画
  10. Android(安卓)OpenGL ES教程 第二部分 构