Android 实现标题重用
2015-06-24 09:01
351 查看
有时候我们需要在不同Activity中使用相似的标题,这时候我们可以定义一个BaseHeadActivity来代表标题,在其它Activity中继承BaseHeadActivity就可以实现标题的重用,也可以在BaseHeadActivity中定义一些方法控制标题组件的显示样式。
实现的最核心的部分是BaseHeadActivity需要重写父类的三个setContentView方法,BaseHeadActivity的布局文件要有一个View容器,用来存放其它Activity的布局。
(1)首先来看看[b] BaseHeadActivity 的布局文件定义:[/b]
(2)然后是在 BaseHeadActivity 中重写父类 Activity 的三个 setContentView 方法,当继承 BaseHeadActivity 的类在调用setContentView 方法时,布局就会添加到在View容器中。
代码:
就可以了。
实现的最核心的部分是BaseHeadActivity需要重写父类的三个setContentView方法,BaseHeadActivity的布局文件要有一个View容器,用来存放其它Activity的布局。
(1)首先来看看[b] BaseHeadActivity 的布局文件定义:[/b]
<span style="font-size:12px;"><strong><span style="font-size:18px;">activity_basehead.xml</span></strong> <?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="@dimen/dimen_title_bar_height" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" android:background="@color/color_title_bar_blue" android:padding="@dimen/dimen_layout_margin_little" android:id="@+id/rl_title_bar"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="@string/title" android:id="@+id/tv_title" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:textColor="@color/color_text_while" android:textSize="@dimen/dimen_level1_text_size" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/img_button" android:layout_centerVertical="true" android:layout_alignParentStart="true" android:background="@mipmap/arrow_back" android:layout_marginLeft="@dimen/dimen_layout_margin_little" /> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_horizontal" android:id="@+id/<span style="color:#FF6666;">rl_container</span>"></RelativeLayout> </LinearLayout> </span>
(2)然后是在 BaseHeadActivity 中重写父类 Activity 的三个 setContentView 方法,当继承 BaseHeadActivity 的类在调用setContentView 方法时,布局就会添加到在View容器中。
<span style="font-size:12px;">@Override public void setContentView(View view) { setContentView(view,view.getLayoutParams()); } @Override public void setContentView(View view, ViewGroup.LayoutParams params) { <span style="color:#FF6666;">rl_container</span>.addView(view,params); } @Override public void setContentView(int layoutResID) { View v = getLayoutInflater().inflate(layoutResID,rl_container,false); setContentView(v); }</span>完整的 BaseHeadActivity
代码:
public class BaseHeadActivity extends Activity { private RelativeLayout rl_title_bar,rl_container; private TextView tv_title; private ImageButton img_button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_basehead); assignview(); } @Override public void setContentView(View view) { setContentView(view,view.getLayoutParams()); } @Override public void setContentView(View view, ViewGroup.LayoutParams params) { rl_container.addView(view,params); } @Override public void setContentView(int layoutResID) { View v = getLayoutInflater().inflate(layoutResID,rl_container,false); setContentView(v); } private void assignview() { rl_title_bar = (RelativeLayout)findViewById(R.id.rl_title_bar); rl_container = (RelativeLayout)findViewById(R.id.rl_container); tv_title = (TextView)findViewById(R.id.tv_title); img_button = (ImageButton)findViewById(R.id.img_button); } //设置标题 protected void setTitle(String title){ tv_title.setText(title); } //隐藏左按钮 protected void hideBackButton(){ img_button.setVisibility(View.GONE); } //显示左按钮 protected void showBackButton(){ img_button.setVisibility(View.VISIBLE); } //添加左按钮点击事件 protected void setBackButtonOnClickListener(View.OnClickListener listener){ img_button.setOnClickListener(listener); } //设置标题字体颜色 protected void setTitleTextColor(int color){ tv_title.setTextColor(color); } //设置标题颜色 protected void setTitleBarColor(int color){ rl_title_bar.setBackgroundColor(color); } }(3)在需要使用标题的Activity继承 BaseHeadActivity
就可以了。
相关文章推荐
- Android学习 14-> 浅谈下活动Activity
- Android NDK开发基础
- Android 组件学习--CheckBox
- Android开发之详解五大布局
- Android存储之SharedPreferences
- Android代码实现清理缓存
- Android开发历程(sqlite事物、游标适配器、include标签)
- Android开发历程
- android MD5 加密算法
- Android 自定义 HorizontalScrollView 图片控件
- Android基础之简单mune菜单详解
- android调试时apk可运行,导出签名的apk后闪退
- synchronized使用方法
- [Android随笔]Android参考书籍
- 欠揍的ffmpeg,调试android里的ffmpeg (1)
- 获取Android设备基本信息 TelephonyManager
- Android自定义控件View的探讨
- 如何定位Android NDK开发中遇到的错误(内附我的总结补充)
- Android逆向工程研究
- 【Android】一段时间不操作弹出【屏保】效果