欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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>

注意:这里添加自定义控件时,要指明控件的全类名,包名不可以省略

运行结果:
Android自定义顶部标题栏

本文地址:https://blog.csdn.net/weixin_45922212/article/details/112549770

相关标签: Android