如何设置ActionBar标题居中
来源:互联网 发布:wind数据库一年多少钱 编辑:程序博客网 时间:2024/05/07 03:31
首先声明:该方法并不是绝对准确居中。。。
前提:
1、我不想自定义Dialog显示菜单,因此就不能隐掉ActionBar;
2、我不需要ActionBar显示左侧的图片;
3、我需要ActionBar居中显示Title;
4、我需要显示右侧的菜单按钮。
历程:
根据自己的需求,开始奋战于网络世界,各种不行,但是某篇技术Blog的内容给了我启发,那就是Title的id可以获取到!!!
可以获取到id又能怎样?那当然是设置各种属性啦!
效果:
前文已说明不是绝对居中,火眼金睛请蒙上。。。
代码:
// activity类里面的代码private ActionBar actionBar; //ActionBar 实例private TextView tvTitle; //TextView 实例(即Title)@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 初始化ActionBar实例 actionBar = getActionBar(); // 设置不显示左侧图标 actionBar.setDisplayShowHomeEnabled(false); // 重要内容,获取Title的id.... // 关于id的定义,可见于SDK安装目录下的sdk\platforms\android-21\data\res\layout int titleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android"); // 既然获取了id,那剩下的就发挥想象去涂鸦吧 tvTitle = (TextView) findViewById(titleId); tvTitle.setTextColor(0xFFFFFFFF); tvTitle.setTextSize(25); // tvTitle.setBackgroundColor(0XFF00FF00); // 设置背景,便于观察效果 // 获取屏幕的相关尺寸,用以转换单位 DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); float density = metric.density; int widthMax = metric.widthPixels; // 关键的一刀,设置宽度为屏幕宽度(但是实际显示并不是那样哈) tvTitle.setWidth(widthMax); // 既然这些都设置了,为啥不设置个padding什么的呢(控制文字位置) int paddingLeft = (int) (-16 * density); // 控制左边距 int paddingRight = (int) (-60 * density); // 右边距(近似值) tvTitle.setPadding(paddingLeft, 0, paddingRight, 0); // 设置文字居中(因为设置了padding,显示的时候会以padding后的尺寸为准居中显示) tvTitle.setGravity(Gravity.CENTER); actionBar.setTitle("检测更新"); setContentView(R.layout.activity_function);}
疑问:
1、为啥要设置Title的TextView为最大宽度?
2、为啥设置左右padding分别为-16dp和-60dp?
解惑:
1、设置Title的TextView为屏幕最大宽度,只是为了使其尽可能的占用屏幕空间(便于后面的padding属性设置);
2、-16dp和-60dp这两个数值是估算值,具体如下:
我在布局文件中添加了两个红色的View,分别居左和居右(用来估测padding数值),如下图,因为google的风格(4dp、8dp、16dp、48dp…),我估计左侧为16dp,右侧为64dp,设置后,发现左侧的值刚好,但右侧的却有偏差,我改为56dp,匹配了,但是在pad上运行时发现64dp更合适,所以最终折中选择了60dp。
注:
并不是所有设备都支持这样,我测试了4.2和4.4的正常显示,4.0的则不正常(右侧的Menu按钮没了,具体原因没有深究。。。)
第一次写Blog,完全是在折腾~@@@@@@~
- 如何设置ActionBar标题居中
- 自定义ActionBar,ActionBar标题居中
- ActionBar标题居中
- ActionBar标题居中
- actionbar居中的view,标题
- ActionBar自定义视图(标题居中)
- Android ActionBar高级自定义——设置标题居中和添加控件
- Android ActionBar高级自定义——设置标题居中和添加控件
- ActionBar “标题”居中并添加“返回”
- actionbar的样式修改与标题居中
- 设置toolbar标题居中
- Toolbar设置标题居中
- toolbar标题设置居中
- Toolbar标题居中怎么设置
- ActionBar设置自定义布局使文字居中
- 使用setCustomView建立标题居中的自定义ActionBar
- 使用setCustomView建立标题居中的自定义ActionBar
- ActionBar(2) 标题和渐变背景设置
- AngularJS Filters
- 【深度学习】关于解决caffe中draw_net无法使用的问题
- 程序化点击率预估(CTR)
- 关于附加数据库失败的解决办法
- 生成随机数
- 如何设置ActionBar标题居中
- 人脸对齐(三):Face Alignment by Explicit Shape Regression
- 互联网时代网络流量的本质是什么?
- 【开发环境系列】Linux终端提示符PS1修改
- Toad常用快捷键大全
- 广播BroadcastReceiver(2)
- 蛇形填数
- Android:Service:采用Service实现电话窃听器
- 图像处理与计算机视觉:基础,经典以及最近发展(1)序