网上很多做法都是使用setCustomTitle方法实现的,我偏不,因为我已经找到了标题的textView了:
在show了之后可以拿到标题(注意一定是show之后才能拿得到,create之后拿也是空的):
TextView titleView = dialog.findViewById(androidx.appcompat.R.id.alertTitle);
然后在调试的过程中给他设置背景确认了它的宽度就是匹配容器的,那么理想当然的认为给他设置一个居中属性 titleView.setGravity(Gravity.CENTER) 就ok,但是你会发现,没有效果。
实际上通过源码布局中可以看到:
<androidx.appcompat.widget.DialogTitle
android:id="@+id/alertTitle"
style="?android:attr/windowTitleStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:ellipsize="end"
android:singleLine="true"
android:textAlignment="viewStart"/>
它是设置了一个textAlignment属性,表示文本的对齐方式。所以会使得setGravity看起来不生效。那我们设置它对齐方式为居中对齐就OK了:
titleView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
本来还想要在style中对windowTitleStyle统一声明这个textAlignment,但是也会发现不生效,通过上面的布局源码可知在设置了这个style之后才设置的textAlignment,所以你在style中定义textAlignment会被后面替换掉了,所以只能通过动态代码设置的方式来让它居中了。文章来源:https://www.toymoban.com/news/detail-638500.html
完。文章来源地址https://www.toymoban.com/news/detail-638500.html
到了这里,关于Android AlertDialog标题居中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!