android 快速开发(三)巧用公共标题栏:避免每次activity都得写标题栏
16lz
2021-01-26
巧用公共标题栏:避免每次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>
以上的例子虽然都是文字的按钮 根据自己的需要稍加改动就可以
最后大喊一声:开源万岁!
更多相关文章
- Android设置程序最小运行的堆内存
- Android(安卓)studio从菜鸟到高手--第一季
- android UI进阶之自定义组合控件
- Android(安卓)settings中SwitchPreference的简单处理
- Android使用HttpURLConnection进行POST请求,向服务器上传数据
- Android(安卓)Material Design 控件常用的属性
- (笔记)RecyclerView item按下变色效果 没有生效
- android文件选择器filePicker
- 某android平板项目开发笔记----aChartEngine图表显示(2)