Android去除AlertDialog的按鈕欄的分隔線
在網(wǎng)上學(xué)習(xí)了一種繼承系統(tǒng)AlertDialog然后用一統(tǒng)一方法控制dialog顯示的方法,效果還不錯(cuò),但按鈕欄那里的分隔線并不是想要的。于是去查看sdk中的AlertDialog的xml文件中的布局,發(fā)現(xiàn)其中并沒(méi)有這一分隔線的影子,所以判斷應(yīng)該是在style中進(jìn)行設(shè)置的。
在styles文件中找到常用的Dialog的主題如:"Theme.Holo.Light.Dialog"。
<style name="Theme.Holo.Light.Dialog"> <item name="windowFrame">@null</item> <item name="windowTitleStyle">@style/DialogWindowTitle.Holo.Light</item> <item name="windowBackground">@drawable/dialog_full_holo_light</item> <item name="windowIsFloating">true</item> <item name="windowContentOverlay">@null</item> <item name="windowAnimationStyle">@style/Animation.Holo.Dialog</item> <item name="windowSoftInputMode">stateUnspecified|adjustPan</item> <item name="windowActionBar">false</item> <item name="windowActionModeOverlay">true</item> <item name="windowCloseOnTouchOutside">@bool/config_closeDialogWhenTouchOutside</item> <item name="colorBackgroundCacheHint">@null</item> <item name="buttonBarStyle">@style/Holo.Light.ButtonBar.AlertDialog</item> <item name="borderlessButtonStyle">@style/Widget.Holo.Light.Button.Borderless.Small</item> <item name="textAppearance">@style/TextAppearance.Holo.Light</item> <item name="textAppearanceInverse">@style/TextAppearance.Holo.Light.Inverse</item> <item name="listPreferredItemPaddingLeft">16dip</item> <item name="listPreferredItemPaddingRight">16dip</item> <item name="listPreferredItemPaddingStart">16dip</item> <item name="listPreferredItemPaddingEnd">16dip</item> <item name="preferencePanelStyle">@style/PreferencePanel.Dialog</item> </style>
在其中找到有關(guān)按鈕欄的樣式:“Holo.Light.ButtonBar.AlertDialog”。
<style name="Holo.Light.ButtonBar.AlertDialog"> <item name="background">@null</item> <item name="dividerPadding">0dp</item> </style>
發(fā)現(xiàn)這里沒(méi)有有關(guān)分隔線的設(shè)置,于是接著看它的父樣式:"Holo.Light.ButtonBar"。
<style name="Holo.Light.ButtonBar" parent="Holo.ButtonBar" />
這里只是繼承了“Holo.ButtonBar”,所以接著向上找。
<style name="Holo.ButtonBar" parent="ButtonBar"> <item name="paddingTop">0dip</item> <item name="paddingStart">0dip</item> <item name="paddingEnd">0dip</item> <item name="paddingBottom">0dip</item> <item name="divider">?attr/dividerVertical</item> <item name="showDividers">middle</item> <item name="dividerPadding">12dip</item> <item name="background">@null</item> </style>
終于看到了有關(guān)divider的屬性。
<item name="divider">?attr/dividerVertical</item> <item name="showDividers">middle</item> <item name="dividerPadding">12dip</item>
name="divider“
屬性名為“divider”的值是一個(gè)dividerVertical的引用。
<!-- Drawable to use for generic vertical dividers. --> <attr name="dividerVertical" format="reference" />
然后theme文件中找到它。
<item name="dividerVertical">?attr/listDivider</item>
發(fā)現(xiàn)dividerVertical的值還是一個(gè)引用listDivider,于是我們繼續(xù)在theme文件中找到listDivider。
<item name="listDivider">@drawable/list_divider_holo_dark</item>
到這,就知道了名為”divider“的屬性最終是引用了一個(gè)drawable來(lái)當(dāng)做分隔線。
name="showDividers"
android:showDividers屬性可以設(shè)置如下4個(gè)值:
- none:不顯示分隔線;
- beginning:在LinearLayout的開(kāi)始處顯示分隔線;
- end:在Linearlayout的結(jié)尾處顯示分隔線;
- middle:在LinearLayout中的每?jī)蓚€(gè)組件間顯示分隔線;
所以如果不想按鈕欄帶有分隔線就可以創(chuàng)建自己的按鈕欄樣式并繼承”Holo.Light.ButtonBar.AlertDialog“,然后將這一屬性設(shè)為"none"。
<style name="My_ButtonBar_Style" parent="@android:style/Holo.Light.ButtonBar.AlertDialog"> <item name="android:showDividers">none</item> </style>
然后將自定義的樣式加入自定義的alert_dialog主題中,這樣divider就不會(huì)再顯示了。
<style name="alert_dialog" parent="@android:style/Theme.Holo.Light.Dialog"> <item name="android:windowIsTranslucent">false</item> <item name="android:windowNoTitle">false</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowBackground"> @android:color/transparent</item> <item name="android:buttonStyle">@style/Button_Style</item> <item name="android:buttonBarStyle">@style/Gui_ButtonBar_Style</item> </style>
除去divider.png
name="dividerPadding"
這一屬性就是分隔線對(duì)于按鈕欄的padding。例如,如果是垂直的divider,則這一padding就是divider距離按鈕欄上下邊界的距離。
dividerPadding.png
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android AlertDialog多種創(chuàng)建方式案例詳解
- Android編程自定義AlertDialog樣式的方法詳解
- Android使用AlertDialog創(chuàng)建對(duì)話框
- Android開(kāi)發(fā)實(shí)現(xiàn)AlertDialog中View的控件設(shè)置監(jiān)聽(tīng)功能分析
- Android 自定義AlertDialog對(duì)話框樣式
- Android中AlertDialog 點(diǎn)擊按鈕后不關(guān)閉對(duì)話框的功能
- Android常用的AlertDialog對(duì)話框及自定義對(duì)話框
- Android AlertDialog六種創(chuàng)建方式案例詳解
相關(guān)文章
Android自定義View實(shí)現(xiàn)進(jìn)度條動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)進(jìn)度條動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08Android中ListView Item布局優(yōu)化技巧
這篇文章主要介紹了Android中ListView Item布局優(yōu)化技巧,以實(shí)例形式分析了ListView Item布局的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10Android應(yīng)用開(kāi)發(fā)中自定義ViewGroup視圖容器的教程
這篇文章主要介紹了Android應(yīng)用開(kāi)發(fā)中自定義ViewGroup視圖容器的教程,重點(diǎn)在于View之間的參數(shù)傳遞,文中還講到了使用ViewDragHelper自定義ViewGroup的方法,需要的朋友可以參考下2016-04-04Kotlin 匿名類(lèi)實(shí)現(xiàn)接口和抽象類(lèi)的區(qū)別詳解
這篇文章主要介紹了Kotlin 匿名類(lèi)實(shí)現(xiàn)接口和抽象類(lèi)的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Android Handler移除Message詳解及實(shí)例代碼
這篇文章主要介紹了Android Handler移除Message詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02Android利用CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)功能 Android實(shí)現(xiàn)停留5s跳轉(zhuǎn)到登錄頁(yè)面
這篇文章主要為大家詳細(xì)介紹了Android利用CountDownTimer實(shí)現(xiàn)倒計(jì)時(shí)功能,Android實(shí)現(xiàn)停留5s跳轉(zhuǎn)到登錄頁(yè)面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07