Android自定义顶部标题栏
程序员文章站
2022-11-01 17:01:51
方法11.自定义一个布局title.xml
方法1
1.自定义一个布局title.xml
<?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="wrap_content"
android:background="@drawable/title_bg">
<Button
android:id="@+id/title_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:background="@drawable/back_bg"
android:text="Back"
android:textColor="#fff"
android:textAllCaps="false"/>
<TextView
android:id="@+id/title_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="Title Text"
android:textColor="#fff"
android:textSize="24sp"/>
<Button
android:id="@+id/title_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:background="@drawable/edit_bg"
android:text="Edit"
android:textColor="#fff"
android:textAllCaps="false"/>
</LinearLayout>
其中,定义了两个按钮,分别代表返回和编辑,还有一个文本。然后提前准备了三张图片,分别作为标题栏、返回按钮和编辑按钮的背景。
2.在activity_main.xml中引入布局
<?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">
<include layout="@layout/title"/>
</LinearLayout>
3.在MainActivity中将系统自带的标题栏隐藏掉
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.hide();
}
}
}
方法2
1.新建TitleLayout继承自LinearLayout,让其成为我们自定义标题栏
public class TitleLayout extends LinearLayout {
public TitleLayout(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
//from方法构造出一个LayoutInflater对象,然后调用inflate加载布局
//第一个参数是要加载的布局文件id,第二个参数给加载好的文件添加一个父布局
LayoutInflater.from(context).inflate(R.layout.title, this);
}
}
2.在布局文件中添加自定义控件
<?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">
<com.example.uicustomviews.TitleLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
注意:这里添加自定义控件时,要指明控件的全类名,包名不可以省略
运行结果:
本文地址:https://blog.csdn.net/weixin_45922212/article/details/112549770