自定义标题栏的创建
创建一个标题栏布局对大多数人已经不是问题,但因为每个活动页面基本都会涉及到标题栏的设计,这样代码的重复性大大增加,这个时候就可以使用我们的引入布局。
- 新建一个title,xml文件
- <?xml version="1.0" encoding="utf-8"?>
<Button
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:textColor="#fff"
android:hint="@string/back"
android:textStyle="bold"
/>
<TextView
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:layout_weight="1"
android:textColor="#fff"
android:textSize="24dp"
android:hint="@string/text"
android:textStyle="bold"
/>
<Button
android:id="@+id/edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:textColor="#fff"
android:hint="@string/edit"
android:textStyle="bold"
/>
里面加入了两个按钮和一个TextView 然后在主页面通过
<?xml version="1.0" encoding="utf-8"?>
<include layout="@layout/title"/>
这句代码添加到主页面,注意的是看主页面的布局情况调整 尤其是高度和布局显示。
3.最后在MainActivity.java里面添加两行代码即可。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar =getSupportActionBar();
if(actionBar != null) {
actionBar.hide();
}
}
ActionBar actionBar =getSupportActionBar();这里是通过getSupportActionBar()方法来获取ActionBar ,在条用ActionBar的hide()方法将标题隐藏起来。
自定义控件
引入布局简单的解决了重复编码的问题,但按钮的监听事件,这个就需要我们在每个活动中都取添加监听,而现在有自定义控件就可以解决这种问题,一般我们都会两者一起用。
- 用法
在 java下面新建一个TitileLayout 然后继承LinearLayout,让它成为我们自定义标题栏控件,代码如下:
package com.example.pig;
public class TitleLayout extends LinearLayout {
public TitleLayout(Context context , AttributeSet attrs) {
super(context,attrs);
LayoutInflater.from(context).inflate(R.layout.title,this);**
}
}
2.然后在我们在引入布局中代码中,删除原有的代码,改为:
<?xml version="1.0" encoding="utf-8"?>
<com.example.pig.TitleLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”/>
来源:CSDN
作者:漠然!
链接:https://blog.csdn.net/weixin_43727601/article/details/103751893