android preference 分割线,Android去除AlertDialog的按钮栏的分隔线

在网上学习了一种继承系统AlertDialog然后用一统一方法控制dialog显示的方法,效果还不错,但按钮栏那里的分隔线并不是想要的。于是去查看sdk中的AlertDialog的xml文件中的布局,发现其中并没有这一分隔线的影子,所以判断应该是在style中进行设置的。

b53ccddbcb9aaa230eff2d637ce0160f.png

在styles文件中找到常用的Dialog的主题如:"Theme.Holo.Light.Dialog"。

@null

@style/DialogWindowTitle.Holo.Light

@drawable/dialog_full_holo_light

true

@null

@style/Animation.Holo.Dialog

stateUnspecified|adjustPan

false

true

@bool/config_closeDialogWhenTouchOutside

@null

@style/Holo.Light.ButtonBar.AlertDialog

@style/Widget.Holo.Light.Button.Borderless.Small

@style/TextAppearance.Holo.Light

@style/TextAppearance.Holo.Light.Inverse

16dip

16dip

16dip

16dip

@style/PreferencePanel.Dialog

在其中找到有关按钮栏的样式:“Holo.Light.ButtonBar.AlertDialog”。

@null

0dp

发现这里没有有关分隔线的设置,于是接着看它的父样式:"Holo.Light.ButtonBar"。

这里只是继承了“Holo.ButtonBar”,所以接着向上找。

0dip

0dip

0dip

0dip

?attr/dividerVertical

middle

12dip

@null

终于看到了有关divider的属性。

?attr/dividerVertical

middle

12dip

name="divider“

属性名为“divider”的值是一个dividerVertical的引用。

然后theme文件中找到它。

?attr/listDivider

发现dividerVertical的值还是一个引用listDivider,于是我们继续在theme文件中找到listDivider。

@drawable/list_divider_holo_dark

到这,就知道了名为”divider“的属性最终是引用了一个drawable来当做分隔线。

name="showDividers"

android:showDividers属性可以设置如下4个值:

none:不显示分隔线;

beginning:在LinearLayout的开始处显示分隔线;

end:在Linearlayout的结尾处显示分隔线;

middle:在LinearLayout中的每两个组件间显示分隔线;

所以如果不想按钮栏带有分隔线就可以创建自己的按钮栏样式并继承”Holo.Light.ButtonBar.AlertDialog“,然后将这一属性设为"none"。

none

然后将自定义的样式加入自定义的alert_dialog主题中,这样divider就不会再显示了。

false

false

true

@android:color/transparent

@style/Button_Style

@style/Gui_ButtonBar_Style

faeb4da95e70c58ebe6e8be787931167.png

除去divider.png

name="dividerPadding"

这一属性就是分隔线对于按钮栏的padding。例如,如果是垂直的divider,则这一padding就是divider距离按钮栏上下边界的距离。

bcafb5ca70452d15d87b758c4d33b23f.png

dividerPadding.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值