Android-自定义Toolbar的方法

因为实际开发一个App需要用自定义的Toolbar/Actionbar ,网上查了很多资料发现写的并不全,今天通过实际编写代码总结出一个比较简单方便的自定义toolbar的方法,仅供参考


1,toolbar修改后退键图标的方法
获得Toolbar的实例,直接使用setNavigationIcon(resId)即可改变原来的后退按钮图标
toolbar.setNavigationIcon(R.drawable. button_login) ;

2,自定义Toolbar的样式
例:将toolbar的title改到中间:
->MainActivity中取消显示Title
getSupportActionBar().setDisplayShowTitleEnabled( false) ;

->在Toolbar内部加入TextView用来当作title显示,代码如下,我添加了一个TextView显示Title,一个ImageView显示刷新的图标
<android.support.v7.widget.Toolbar
    android :id= "@+id/toolbar"
    android :layout_width= "match_parent"
    android :layout_height= "?attr/actionBarSize"
    android :background= "@color/colorPrimary"
    android :elevation= "4dp"
    app :contentInsetLeft= "0dp"
    app :popupTheme= "@style/Theme.AppCompat.Light"
    app :contentInsetStart= "0dp"
    android :theme= "@style/Theme.Design.NoActionBar"  >
    <TextView
        android :id= "@+id/toolbar_title"
        android :text= "@string/title_yun_note"
        android :layout_gravity= "center"
        android :textSize= "20sp"
        android :textColor= "@android:color/white"
        android :layout_width= "wrap_content"
        android :layout_height= "wrap_content"  />

    < ImageView
        android :src= "@drawable/navigation_refresh"
        android :id= "@+id/image_button_refresh"
        android :layout_gravity= "right"
        android :visibility= "invisible"
        android :layout_marginRight= "5dp"
        android :layout_width= "wrap_content"
        android :layout_height= "wrap_content"  />


</android.support.v7.widget.Toolbar>

->以上这种方式可以完全自定义toolbar的所有控件,自定义的控件可以通过MainActivity::toolbar.findViewById()设置事件的监听,代码如下
refreshButton = (ImageView)  toolbar.findViewById(R.id. image_button_refresh) ;
refreshButton.setVisibility(View. VISIBLE) ;
refreshButton.setOnClickListener( new View.OnClickListener() {
    @Override
    public void  onClick(View view) {
        //  TODO: 16/8/13 rotate refresh button
        //  TODO: 16/8/13 check isLogin, if not, go to LoginActivity
        Toast. makeText(MainActivity. this, "rotate refresh button" ,Toast. LENGTH_SHORT).show() ;
    }
}) ;

3,以上的Toolbar自定义样式可以与res\menu\menu.xml 一起用,即
@Override
public boolean  onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu. menu ,menu) ;
    return super.onCreateOptionsMenu(menu) ;
}

这样你的toolbar就可以自定义标题样式以及控件,同时又可以用overflow了。

关于Toolbar的基本使用请查看

  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

githan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值