Android AlertDialog 단추 표시 줄 구분자 제거

인터넷 에서 계승 시스템 인 AlertDialog 를 배 운 다음 에 하나의 통 일 된 방법 으로 dialog 디 스 플레이 를 제어 하 는 방법 을 배 웠 습 니 다.효과 가 좋 지만 버튼 표시 줄 에 있 는 구분자 가 원 하 는 것 이 아 닙 니 다.그래서 sdk 에 있 는 AlertDialog 의 xml 파일 의 구 조 를 살 펴 보 니 이 구분자 의 그림자 가 없 기 때문에 style 에서 설정 해 야 한다 고 판단 합 니 다.

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>
단추 표시 줄 에 대한 스타일 을 찾 습 니 다:"Holo.Light.Button Bar.AlertDialog".

<style name="Holo.Light.ButtonBar.AlertDialog">
    <item name="background">@null</item>
    <item name="dividerPadding">0dp</item>
 </style>
분리 선 에 대한 설정 이 없 는 것 을 발견 하고 부모 스타일 을 보 았 습 니 다."Holo.Light.Button Bar".

<style name="Holo.Light.ButtonBar" parent="Holo.ButtonBar" />
이곳 은'Holo.Button Bar'를 물 려 받 았 을 뿐 이어서 위로 찾 았 다.

<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>
드디어 divider 에 대한 속성 을 보 았 습 니 다.

<item name="divider">?attr/dividerVertical</item>
<item name="showDividers">middle</item>
<item name="dividerPadding">12dip</item>
name="divider“
속성 이름 이"divider"인 값 은 divider 수직 참조 입 니 다.

 <!-- Drawable to use for generic vertical dividers. -->
 <attr name="dividerVertical" format="reference" />
그리고 theme 파일 에서 찾 으 세 요.

<item name="dividerVertical">?attr/listDivider</item>
divider Vertical 의 값 이 listDivider 를 참조 하 는 것 을 발 견 했 습 니 다.그래서 우 리 는 theme 파일 에서 listDivider 를 계속 찾 았 습 니 다.

<item name="listDivider">@drawable/list_divider_holo_dark</item>
여기까지 만 해도'divider'라 는 속성 은 결국 하나의 drawable 을 인용 하여 구분자 로 사용 한 다 는 것 을 알 수 있 습 니 다.
name="showDividers"
android:showDividers 속성 은 다음 과 같은 4 개의 값 을 설정 할 수 있 습 니 다.
  • none:구분자 가 표시 되 지 않 습 니 다.
  • begin:Linear Layout 의 시작 부분 에 구분자 표시 하기;
  • end:Linearlayout 의 끝 에 구분자 표시 하기;
  • middle:Linear Layout 의 두 구성 요소 사이 에 구분자 표시 하기;
  • 따라서 단추 표시 줄 에 구분자 가 있 지 않 으 려 면 자신의 단추 표시 줄 스타일 을 만 들 고'Holo.Light.Button Bar.AlertDialog'를 계승 한 다음 이 속성 을'none'으로 설정 할 수 있 습 니 다.
    
    <style name="My_ButtonBar_Style" parent="@android:style/Holo.Light.ButtonBar.AlertDialog">
        <item name="android:showDividers">none</item>
    </style>
    그리고 사용자 정의 스타일 을 사용자 정의 alert 에 추가 합 니 다.dialog 테마 에서 divider 는 더 이상 표시 되 지 않 습 니 다.
    
    <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"
    이 속성 은 단추 표시 줄 에 대한 패 딩 입 니 다.예 를 들 어 수직 divider 라면 이 padding 은 divider 거리 단추 표시 줄 상하 경계 거리 입 니 다.

    dividerPadding.png
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기