美文网首页Android笔记本
Android-ToolBar-居中标题

Android-ToolBar-居中标题

作者: 山水墨阳 | 来源:发表于2018-10-30 14:49 被阅读34次

    Android 开发ToolBar组件默认是居左显示,根据需求,大多需要居中显示。网上大多的做法是添加一个TextView,将源标题设置为空,再设置添加的TextView格式居中。这样可以达到目的,但源标题组件其实还是存在的,其实跟一跟源码就能找到实现方式,先上干货,再做讲解:

    干货:

    toolbar=parentView.findViewById(R.id.toolbar);//获取组件

    toolbar.setBackgroundColor(getResources().getColor(R.color.colorHead));//根据需求设置颜色

    toolbar.setTitleTextColor(getResources().getColor(R.color.colorWhite));//根据需求设置颜色

    toolbar.setTitle("主标题");//ToolBar中 index=0

    toolbar.setSubtitle("副标题");//ToolBar中 index=1

    TextView textView = (TextView)toolbar.getChildAt(0);//主标题

    textView.getLayoutParams().width = LinearLayout.LayoutParams.MATCH_PARENT;//填充父类

    textView.setGravity(Gravity.CENTER_HORIZONTAL);//水平居中,CENTER,即水平也垂直,自选

    TextView textView1 = (TextView)toolbar.getChildAt(1);//副标题

    textView1.getLayoutParams().width = LinearLayout.LayoutParams.MATCH_PARENT;

    textView1.setGravity(Gravity.CENTER_HORIZONTAL);

    思路:

    获取原始组件,动态更改布局。鄙人是通过断点调试跟代码找到的方法的,进入ToolBar源码,其两个方法:

    主标题:setTitle()

    初始化的时候回去new一个AppCompatTextView对象,(其继承自TextView,所以代码中我直接用TextView接收),有图为证:

    副标题:setSubtitle()

    同样,设置的时候回去new一个AppCompatTextView对象,赋值加入ToolBar的布局中,有图为证:

    既然底层是TextView,那我们完全可以拿到它再对其布局进行动态更改不就行啦。ToolBar提供一个获取子视图的方法:getChildAt(int index)。依次第一个为主标题,第二个为副标题,拿到后将其布局设置成:

    textView.getLayoutParams().width = LinearLayout.LayoutParams.MATCH_PARENT;

    textView.setGravity(Gravity.CENTER_HORIZONTAL);

    其实等同于在XML中布局设置:

    android:layout_width="match_parent" 

    android:gravity="center_horizontal"

    后记:

    1、如有不对请指教。

    2、因为看到网上很多都是新增一个TextView的方式来实现,个人感觉没必要。

    3、根据个人需求,选择实现方式,此处只做抛砖引玉。

    4、注意:该居中建立在左侧和右侧对称的情况下,否则看起来就不那么对称。即如果左侧有个返回按钮,那右侧可以根据需求添加一个图标

    相关文章

      网友评论

        本文标题:Android-ToolBar-居中标题

        本文链接:https://www.haomeiwen.com/subject/ycjgtqtx.html