2013-05-28 3 views
22

Я работаю над проектом Android, и у меня есть LinearLayout, который содержит 2 горизонтальные кнопки, используя стиль кнопки без рамки.Разделители LinearLayout не отображаются

Я пытаюсь показать разделители между каждой кнопкой, но они не отображаются, но я не вижу причин, почему бы и нет. Ниже приведена XML-схема:

<LinearLayout android:id="@+id/call_log_select_host_button_group" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_alignParentBottom="true" 
     android:divider="#ffffff" 
     android:showDividers="middle" 
     android:dividerPadding="22dp"> 
     <Button android:id="@+id/call_log_select_btnCancel" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Cancel" 
      style="?android:attr/borderlessButtonStyle" /> 
     <Button android:id="@+id/call_log_select_btnBlock" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Block" 
      style="?android:attr/borderlessButtonStyle" /> 
    </LinearLayout> 

Благодарим за любую помощь, которую вы можете предоставить.

+1

Глупый вопрос но какой цвет ваш фон? – codeMagic

+0

It the Theme.Holo.Dialog, который является темным фоном – Boardy

+2

не забывайте о беспричинных ** ПОКАЗАТЕЛЯХ ** item !!!!!! – Fattie

ответ

85

Создайте файл mydivider.xml внутри res/drawable и положить следующую форму

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <size android:width="1dip" /> 
    <solid android:color="#ffffff" /> 
</shape> 

добавить форму в качестве разделителя для макета

<LinearLayout android:id="@+id/call_log_select_host_button_group" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_alignParentBottom="true" 
     android:divider="@drawable/mydivider" 
     android:showDividers="middle" 
     android:dividerPadding="22dp"> 
     <Button android:id="@+id/call_log_select_btnCancel" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Cancel" 
      style="?android:attr/borderlessButtonStyle" /> 
     <Button android:id="@+id/call_log_select_btnBlock" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Block" 
      style="?android:attr/borderlessButtonStyle" /> 
    </LinearLayout> 

или обходной путь:

<LinearLayout android:id="@+id/call_log_select_host_button_group" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_alignParentBottom="true" 
     android:divider="@drawable/mydivider" 
     android:showDividers="middle" 
     android:dividerPadding="22dp"> 
     <Button android:id="@+id/call_log_select_btnCancel" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Cancel" 
      style="?android:attr/borderlessButtonStyle" /> 

     <View android:layout_width="1dp" 
      android:layout_height="wrap_content" 
      android:background="#ffffff" /> 

     <Button android:id="@+id/call_log_select_btnBlock" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Block" 
      style="?android:attr/borderlessButtonStyle" /> 
    </LinearLayout> 
+0

, это не работает на Android 2.2. –

+0

@BasavarajHampali, но вы можете использовать LinearLayoutICS в библиотеке поддержки, как показано здесь: http://stackoverflow.com/questions/22547897/how-to-add-dividers-to-lingleayoutics/ –

+4

он не работает для моего приложения таргетинг на Android 4.4.2 с минимальным API 11 – ericn

0

Вы должны добавить android:layout_width="fill_parent" и android:layout_height="fill_parent" в свой LinearLayout. Таким образом это будет показано;)

+0

Выполнение этого разрывает макет, так как контент над группой кнопок не отображает только кнопки в верхней части активности, а разделители все еще не отображают – Boardy

+0

и добавляет 'android: weightSum =" "' в ваш LinearLayout? Это решит вашу проблему? – Wannabe

+0

Я попытался установить weightSum на 2, как описано в http://stackoverflow.com/questions/7452741/what-is-androidweightsum-in-android-and-how-does-it-work, но он по-прежнему показывает группу кнопок наверху, занимая верхнюю часть с содержимым, которое должно быть выше кнопок, которые не отображаются, а разделители не отображаются. – Boardy

11

Попробуйте заменить android:divider="#ffffff" на android:divider="@android:color/white". Мое подозрение состоит в том, что divider должен быть Drawable, и жестко-кодирующий цвет может не относиться к нему как к Drawable, но, возможно, ссылаясь на него.

+1

Вы правы. Переключился с цвета на drawable и вуаля! За работой. Принятый ответ имеет отличный пример – mente

Смежные вопросы