公用标题栏(TitleBar)

通过在BaseActivity中定义一个自定义标题栏,并提供setMyActionBar方法,允许子类继承后轻松设置返回按钮、标题文字和设置按钮。以此简化不同Activity间标题栏的配置,提高开发效率。
摘要由CSDN通过智能技术生成

开发的时候标题栏随着不同的activity变化而相应发生变化,如果一个一个写显得很麻烦。可以在BaseActivity中自定义一个标题栏,其余activity通过继承而简单的通过BaseActivity中的某个方法直接进行标题栏的设置。

1、定义BaseActivity,在BaseActivity中自定义一个标题栏,并曝露出一个方法,可以让子类通过继承而实现直接设置标题栏中的文字,设置按钮和返回按钮

public classBaseActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}


public void setMyActionBar(String title,boolean hasBackButton,boolean hasSettingButton){

View  viewTitleBar = getLayoutInflater().inflate(R.layout.actionbar_myview, null);

ActionBar.LayoutParams lp =newActionBar.LayoutParams(

ActionBar.LayoutParams.MATCH_PARENT,

ActionBar.LayoutParams.MATCH_PARENT,

Gravity.CENTER);

ActionBar actionBar = getSupportActionBar();

actionBar.setCustomView(viewTitleBar,lp);

actionBar.setDisplayShowHomeEnabled(false);//去掉导航

actionBar.setDisplayShowTitleEnabled(false);//去掉标题

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

actionBar.setDisplayShowCustomEnabled(true);

TextView tvTitle = (TextView) actionBar.getCustomView().findViewById(R.id.tv_action_text);

tvTitle.setText(title);

ImageButton leftImageButton = (ImageButton)actionBar.getCustomView().findViewById(R.id.ibtn_left_back);

if(!hasBackButton) {

leftImageButton.setVisibility(View.INVISIBLE);

}else{

leftImageButton.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View v) {

BaseActivity.this.finish();

}
});

}
ImageButton rightImageButton = (ImageButton)actionBar.getCustomView().findViewById(R.id.ibtn_right_setting);

if(!hasSettingButton) {

rightImageButton.setVisibility(View.INVISIBLE);

}else{

rightImageButton.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View v) {

Intent intent =newIntent(BaseActivity.this,SettingActivity.class);

startActivity(intent);

}
});

}
}
}

2、在其余activity中继承BaseActivity,并通过setMyActionBar(boolaean,String,boolean),方法进行本页标题栏的设置,其中第一个参数代表是否显示返回按钮,第二个参数代表标题栏文字,第三个代表是否显示设置按钮

SettingActivity代码如下:

public classSettingActivityextendsBaseActivity {

@Override

protected voidonCreate(@NullableBundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_setting);

setMyActionBar("设置",true,false);

}

}

MainActivity代码如下:

public classMainActivityextendsBaseActivity {

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

setMyActionBar("标题栏",false,true);

      }

}

下面上布局文件

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/ibtn_left_back"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/ic_navigate_before_black_24dp"

android:layout_gravity="center_vertical"/>

android:text="2222"

android:layout_gravity="center_vertical"

android:gravity="center"

android:layout_width="0dp"

android:layout_weight="1"

android:id="@+id/tv_action_text"

android:textSize="20sp"

android:layout_height="wrap_content"/>

android:layout_gravity="center_vertical"

android:src="@drawable/ic_build_black_24dp"

android:id="@+id/ibtn_right_setting"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

都是通过继承BaseActivity中的setMyActionBar()方法进行标题栏和按钮的设置的,简单又实用,仅仅定义了一个actionBar

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值