Как добавить (вертикальный) разделитель в горизонтальный LinearLayout?

Я пытаюсь добавить разделитель в горизонтальную линейную компоновку, но я не получаю нигде. Делитель просто не показывает. Я новичок в Android.

Это мой макет XML:

  

используйте это для горизонтального делителя

  1  

и это для вертикального делителя

  1  

ИЛИ, если вы можете использовать разделитель LinearLayout, для горизонтального делителя

      

и в LinearLayout

  

Если вы хотите использовать вертикальный делитель пользователя, то вместо android:height="1dp" в форме используйте android:width="1dp"

Совет. Не забывайте элемент android:showDividers .

Попробуйте это, создайте разделитель в папке res/drawable :

vertical_divider_1.xml

      

И используйте атрибут divider в LinearLayout следующим образом:

     

Примечание: android:divider доступен только в Android 3.0 (уровень API 11) или выше.

Легко добавить разделитель в макет, нам не нужно отдельное представление.

  

Выше кода сделайте вертикальный разделитель для LinearLayout

Обновление: pre-Honeycomb с помощью AppCompat

Если вы используете библиотеку V7 AppCompat, вы можете использовать представление LinearLayoutCompat . Используя этот подход, вы можете использовать гибкие разделители на Android 2.1, 2.2 и 2.3.

Пример кода:

  

drawable / divider.xml: (разделитель с некоторым дополнением сверху и снизу)

        

Очень важно отметить: представление LinearLayoutCompat не расширяет LinearLayout и поэтому вам не следует использовать свойства android:showDividers или android:divider но пользовательские: app:showDividers и app:divider . В коде вы также должны использовать LinearLayoutCompat.LayoutParams не LinearLayout.LayoutParams !

Сегодня я столкнулся с той же проблемой. Как показывают предыдущие ответы, проблема связана с использованием цвета в теге делителя, а не с возможностью рисования. Однако вместо того, чтобы писать свой собственный drawable xml, я предпочитаю использовать эти атрибуты как можно больше. Вы можете использовать андроид: attr / dividerHorizontal и android: attr / dividerVertical, чтобы получить предопределенное выделение:

    

Атрибуты доступны в API 11 и выше.

Кроме того, как упоминалось в своем ответе bocekm, свойство dividerPadding НЕ добавляет дополнительного дополнения по обе стороны от вертикального делителя, как можно было бы предположить. Вместо этого он определяет верхнее и нижнее заполнение и, таким образом, может обрезать разделитель, если он слишком велик.

Разочарочно, вы должны включить отображение разделителей кода в вашей деятельности. Например:

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the view to your layout setContentView(R.layout.yourlayout); // Find the LinearLayout within and enable the divider ((LinearLayout)v.findViewById(R.id.llTopBar)). setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); } 

Вы можете использовать встроенный делитель, это будет работать для обеих ориентаций.

  

Ваш разделитель может не отображаться из-за слишком большого dividerPadding. Вы устанавливаете 22dip, это означает, что разделитель усечен 22dip сверху и 22dip снизу. Если высота вашего макета меньше или равна 44dip, то делитель не будет виден.

Вам нужно создать любое представление для разделителя, например textview или imageview, а затем установить для него фон, если у вас есть изображение, которое использует цвет в качестве фона.

Надеюсь, это вам поможет.

Чтобы нарисовать, разделитель LinearLayout должен иметь некоторую высоту, в то время как ColorDrawable (который по существу #00ff00 а также любой другой #00ff00 ) не имеет. Простой (и правильный) способ решить эту проблему состоит в том, чтобы обернуть ваш цвет в некоторый Drawable с предопределенной высотой, например, с возможностью рисования

Вы можете использовать IcsLinearLayout, как используется в библиотеке ActionBarSherlock, или использовать обычный API, ansible в ICS (или скопировать его код).

EDIT: вы также можете использовать LinearLayoutICS, который используется в библиотеке поддержки. Я написал об этом здесь .

Вы можете использовать тот же метод, чтобы создать drawable, как показано здесь , или создать 9-патч.

Если ответ Kapil Vats не работает, попробуйте что-то вроде этого:

рисуем / divider_horizontal_green_22.xml

     

макет / your_layout.xml

 LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/llTopBar" android:orientation="horizontal" android:divider="@drawable/divider_horizontal_green_22" android:showDividers="middle" > 

Я столкнулся с проблемой, когда атрибут дополнения не работал, поэтому мне нужно было установить высоту делителя непосредственно в разделителе.

Заметка:

Если вы хотите использовать его в вертикальном LinearLayout, сделайте новый, например: drawable / divider_vertical_green_22.xml

      
  • Android-стиль слайдов Android
  • Начальная активность из fragmentа вызывает NullPointerException
  • Фильтровать LogCat, чтобы получать только сообщения из Моего приложения на Android?
  • Как заставить IntentService немедленно остановить кнопку отмены из Activity?
  • Почему мое приложение в списке приложений не открывает файл txt?
  • Как начать новую активность при нажатии кнопки
  • Как скрыть папку в sdcard в android
  • Intent - если активность запущена, переведите ее вперед, иначе запустите новую (из уведомления)
  • Как позвонить в список контактов Android И выбрать один номер телефона со своего экрана сведений?
  • Ошибка AndroidRuntime: Посылка: не удалось вывести значение маршала
  • Фрагмент в ViewPager с использованием FragmentPagerAdapter пуст во второй раз
  • Interesting Posts

    Прочитать пользовательский файл конфигурации на C # (Framework 4.0)

    Исходный запрос с именованным параметром завершается с ошибкой: «Не все именованные параметры установлены»

    Создание консольного приложения log4j использует разные цвета для разных streamов

    Обновлять только файлы JavaScript в Firefox и Chrome

    Как включить динамический выход, когда наушники включены для программ SELECT?

    Как заставить Excel (и другие продукты Microsoft Office) прекратить открытие файлов в одном приложении?

    Как обрезать проанализированное изображение в android?

    Какова максимальная длина строки .NET?

    Ввод символа индийской рупии с клавиатурой Windows 8

    Что такое «Безопасная загрузка» в Windows?

    Есть ли способ получить большой рабочий стол, чем экран?

    Флаги Perl -pe, -pi, -p, -w, -d, -i, -t?

    прекратить навигацию по угловому ui-маршрутизатору до тех пор, пока не будет разрешено promise

    Должен ли я установить свою операционную систему на SSD или HDD?

    Безопасная отправка электронной почты с помощью Thunderbird?

    Давайте будем гением компьютера.