Android BaseActivity自定义标题栏

在Android开发过程中,自定义标题栏是一个常见的需求。本文将介绍如何通过继承BaseActivity来实现自定义标题栏,并提供代码示例。

流程图

首先,我们通过流程图来展示自定义标题栏的实现流程:

开始 创建BaseActivity 定义自定义标题栏布局 在BaseActivity中设置标题栏 在子Activity中调用BaseActivity 结束

甘特图

接下来,我们使用甘特图来展示自定义标题栏的开发周期:

Android BaseActivity自定义标题栏开发周期 2024-01-01 2024-01-02 2024-01-03 2024-01-04 2024-01-05 2024-01-06 2024-01-07 2024-01-08 2024-01-09 2024-01-10 2024-01-11 2024-01-12 2024-01-13 需求分析 设计 编码 测试 发布 需求分析 设计 编码 测试 发布 Android BaseActivity自定义标题栏开发周期

代码示例

  1. 创建自定义标题栏布局:首先,我们需要创建一个自定义标题栏的布局文件,例如custom_title_bar.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:background="@color/colorPrimary">

    <TextView
        android:id="@+id/tv_title"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:text="标题"
        android:textColor="@android:color/white"
        android:textSize="18sp" />

    <Button
        android:id="@+id/btn_right"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="按钮"
        android:textColor="@android:color/white" />
</LinearLayout>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  1. 在BaseActivity中设置标题栏:接下来,在BaseActivity中设置自定义标题栏:
public class BaseActivity extends AppCompatActivity {
    private LinearLayout llTitleBar;
    private TextView tvTitle;
    private Button btnRight;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);

        llTitleBar = findViewById(R.id.ll_title_bar);
        tvTitle = findViewById(R.id.tv_title);
        btnRight = findViewById(R.id.btn_right);

        // 初始化标题栏
        initTitleBar();
    }

    protected void initTitleBar() {
        // 设置标题
        tvTitle.setText("自定义标题");

        // 设置右侧按钮点击事件
        btnRight.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(BaseActivity.this, "点击了按钮", Toast.LENGTH_SHORT).show();
            }
        });
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  1. 在子Activity中调用BaseActivity:最后,在子Activity中继承BaseActivity并调用其方法:
public class SubActivity extends BaseActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置子Activity的布局
        setContentView(R.layout.activity_sub);

        // 调用BaseActivity的initTitleBar方法
        initTitleBar();
    }

    @Override
    protected void initTitleBar() {
        super.initTitleBar();
        // 可以在这里重写或添加额外的标题栏逻辑
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

结语

通过以上步骤,我们可以实现一个自定义的标题栏,并在多个Activity中复用。这种方式可以提高代码的复用性,减少重复代码,使项目更加整洁。希望本文对您有所帮助。