Android自定义标题栏
来源:互联网 发布:linux 得到当前时间 编辑:程序博客网 时间:2024/06/05 03:52
在绝大部分的APP开发中都会用到标题栏,而且同一个项目中的标题栏的长的也相差不大,考虑到复用性决定把标题栏自定义一个View,当然也可以在每个xml中重复的粘贴同样的标题栏布局的代码。
这里定义一个TitleLayout继承RelativeLayout,一般的标题栏在左边和右边都会有一个imageView中间是一个TextView,如果是其他情况可以把不需要的控件直接隐藏掉就行。
public class TitleLayout extends RelativeLayout { private Context context; private RelativeLayout relativeLayout; private ImageView leftImageView, rightImageView; private TextView titleTextView; private TitleOnClickListener titleOnClickListener; public TitleLayout(Context context) { super(context); this.context = context; initView(); } public TitleLayout(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; initView(); } public TitleLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.context = context; initView(); } //初始化view private void initView() { View view = LayoutInflater.from(context).inflate(R.layout.title_layout, null); leftImageView = (ImageView) view.findViewById(R.id.left_imageview); rightImageView = (ImageView) view.findViewById(R.id.right_imageview); titleTextView = (TextView) view.findViewById(R.id.title_textview); relativeLayout = (RelativeLayout) view.findViewById(R.id.titlelayout); this.addView(view); } //设置标题栏背景颜色 public void setTitleBackgroundColor(int color) { relativeLayout.setBackgroundColor(color); } //设置标题 public void setTitleMessage(String title) { titleTextView.setText(title); } //标题文字大小 public void setTitleSize(float size) { titleTextView.setTextSize(size); } //设置左边图片 public void setLeftImage(Drawable drawable) { leftImageView.setImageDrawable(drawable); } //设置右边图片 public void setRightImage(Drawable drawable) { rightImageView.setImageDrawable(drawable); } //左边图片是否隐藏 public void setLeftVisibility(int visibility) { leftImageView.setVisibility(visibility); } //右边图片是否隐藏 public void setRightVisibility(int visibility) { rightImageView.setVisibility(visibility); } //标题文字是否隐藏 public void setTitleVisibility(int visibility) { titleTextView.setVisibility(visibility); } //设置标题文字颜色 public void setTitleColor(int color) { titleTextView.setTextColor(color); } //左边和右边imageview点击事件 public void setListener(final TitleOnClickListener titleOnClickListener) { leftImageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { titleOnClickListener.titleLeftOnClick(); } }); rightImageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { titleOnClickListener.titleRightOnClick(); } }); }}
定义一个接口来相应左边和右边imageView的点击事件,代码如下:
public interface TitleOnClickListener { void titleLeftOnClick(); void titleRightOnClick();}
接下来测试TitleLayout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.example.lzh.titlelayout.TitleLayout android:id="@+id/titlelayout" android:layout_width="match_parent" android:layout_height="@dimen/DIMEN_TITLEHEIGHT"> </com.example.lzh.titlelayout.TitleLayout></RelativeLayout>
public class MainActivity extends Activity { private TitleLayout titleLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); titleLayout = (TitleLayout) findViewById(R.id.titlelayout); titleLayout.setLeftImage(getResources().getDrawable(R.drawable.back)); titleLayout.setRightImage(getResources().getDrawable(R.drawable.add)); titleLayout.setTitleMessage("TitleLayout"); titleLayout.setTitleSize(26); titleLayout.setTitleColor(getResources().getColor(R.color.white)); titleLayout.setTitleBackgroundColor(getResources().getColor(R.color.bg_color)); titleLayout.setListener(new TitleOnClickListener() { @Override public void titleLeftOnClick() { Toast.makeText(MainActivity.this, "点击了左边的图标", Toast.LENGTH_SHORT).show(); } @Override public void titleRightOnClick() { Toast.makeText(MainActivity.this, "点击了右边的图标", Toast.LENGTH_SHORT).show(); } }); }
效果图如下:
好了,这样一个简单的自定义标题栏就完成了!
0 0
- android自定义标题栏progressBar
- Android自定义标题栏
- 自定义android标题栏
- android实现自定义标题栏
- Android自定义标题栏
- Android 自定义标题栏
- Android 自定义标题栏
- Android自定义标题栏
- Android自定义标题栏
- android之自定义标题栏
- Android自定义标题栏
- Android 自定义标题栏运用
- Android 自定义标题栏
- android ListView+自定义标题栏
- Android 自定义标题栏
- Android:自定义标题栏
- Android Actionbar自定义标题栏
- 自定义Android标题栏TitleBar
- protobuf中的variable-integer编码方式
- linux(centos7)+apache+php7 安装教程
- 常用反射操作
- MyEclipse has detected that less than 5% of the 341MB of PS Old Gen(Heap memory) space remains.
- A Knight's Journey(DFS)
- Android自定义标题栏
- hrbust 1041 哈理工oj 1041 Chocolate Auction【线段树+区间更新】
- Qt使用QGraphicsView实现滑动窗体效果
- pycnn add实例
- BDC操作与常见问题
- 对Android自带的软键盘进行一些界面上的设置
- Gulp vs Grunt 前端工程构建工具
- iOS开发出绚丽的界面:Quartz 2D
- Python2.7:测试内部类型及type和isinstance用法区别