android toolbar区别,android 通用Toolbar

一、基于Activity

在的其他Activity只要继承于这个BaseActivity,实现抽象方法会实现返回操作,可以根据自己的需求把initBaseView里面的设置title和回退按钮的逻辑分离出来,比较更加通用一些。

public abstract class BaseActivity extends AppCompatActivity {

/**

* 输入toolbar的id,和文本内容

*/

public void initBaseView(int id,String title)

{

Toolbar commonToolBar = (Toolbar)findViewById(id);

TextView commonTitle=(TextView)findViewById(R.id.setting_title);

commonTitle.setText(title);

setSupportActionBar(commonToolBar);

setBackArrow();

}

/**

* 设置左上角back按钮

*/

public void setBackArrow() {

final Drawable upArrow = getResources().getDrawable(R.drawable.icon_back_left);

//给ToolBar设置左侧的图标

getSupportActionBar().setHomeAsUpIndicator(upArrow);

// 给左上角图标的左边加上一个返回的图标 。对应ActionBar.DISPLAY_HOME_AS_UP

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

//设置actionBar的标题是否显示,对应ActionBar.DISPLAY_SHOW_TITLE。

getSupportActionBar().setDisplayShowTitleEnabled(false);

}

/**

* 点击左上角的返回按钮,结束本Activity

* home就是左上角的小箭头,在toolbar上

*

* @param item

* @return

*/

@Override

public boolean onOptionsItemSelected(MenuItem item) {

if (item.getItemId() == android.R.id.home) {

basefinish();

return true;

}

return super.onOptionsItemSelected(item);

}

/**

* 抽象方法,用于结束activity

*/

public abstract void basefinish();

@Override

public void onBackPressed() {

basefinish();

}

}

二、基于Fragment

这个需要注意的是onViewCreated里面进行了相关初始化,在继承这个BaseFragment 的子类想要调用方法必须onViewCreated或者这个方法之后,这个方法在Fragment的生命周期中是onCreateView之后执行做相关的初始化操作

public class BaseFragment extends Fragment {

/**

* 通用的ToolBar标题

*/

private TextView commonTitle;

/**

* 通用的ToolBar

*/

private Toolbar commonToolBar;

public Activity mActivity;

private AppCompatActivity mAppCompatActivity;

@Override

public void onViewCreated(View view, Bundle savedInstanceState) {

super.onViewCreated(view, savedInstanceState);

mActivity = getActivity();

mAppCompatActivity=(AppCompatActivity)mActivity;

}

public void initBaseView(View view,int id,String title)

{

commonToolBar = (Toolbar)view.findViewById(id);

commonTitle=(TextView)view.findViewById(R.id.setting_title);

mAppCompatActivity.setSupportActionBar(commonToolBar);

commonTitle.setText(title);

setBackArrow();

}

/**

* 设置左上角back按钮

*/

public void setBackArrow() {

final Drawable upArrow = getResources().getDrawable(R.drawable.icon_back_left);

//给ToolBar设置左侧的图标

mAppCompatActivity.getSupportActionBar().setHomeAsUpIndicator(upArrow);

// 给左上角图标的左边加上一个返回的图标 。对应ActionBar.DISPLAY_HOME_AS_UP

mAppCompatActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);

//设置actionBar的标题是否显示,对应ActionBar.DISPLAY_SHOW_TITLE。

mAppCompatActivity.getSupportActionBar().setDisplayShowTitleEnabled(false);

}

}

还需要注意的就是菜单按钮的创建和Activity不同:

Activity是需要返回值的 public boolean onOptionsItemSelected(MenuItem item) 方法,

Fragment是需要提前设置setHasOptionsMenu(true),同时是 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 一个void方法。

a1201b01e3c2507d65abb564f6625db2.png

标签:通用,title,void,id,Activity,getSupportActionBar,android,public,Toolbar

来源: https://blog.csdn.net/qq_35988274/article/details/100130759

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值