2016-12-13 9 views
3

В happy.xml у меня есть LinearLayout ...Android LinearLayout делитель, но процент?

<LinearLayout 
    android:orientation="vertical" 
    android:divider="@drawable/happy_spacer" 
    android:showDividers="middle" 
    ...> 

Вот файл happy_spacer.xml ...

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <size android:height="8dp" /> 
    <solid android:color="#90909090" /> 
</shape> 

Потрясающе, распорка является 8dp высокой.

Но вы не можете так работать больше в реагирующей мире, высота проставки должен быть определенный процент от высоты страницы она сидит в.

(Или, он должен - скажем - относятся к высоте чего-то еще на happy.xml.)

Что такое Android-решение?

(Важные - в Charuka объясняет ниже, вы почти наверняка хотите "РХ" физические пиксели в такой ситуации, не Dp или погружения.)

Для современного Android, APK 21 только вперед.

+1

Существует поддержка библиотеки для обработки процентов, но это только PercentRelativeLayout и PercentFrameLayout ... Я не думаю, что можно использовать процент для фигуры. – Jaythaking

ответ

4

Обычно, по крайней мере, по моему опыту, перечислители элементов списка : статическая высота. В любом случае, я не думаю, что вы можете сделать это в процентах от высоты экрана с помощью XML, но вы можете программно использовать setDividerHeight(); хотя вам придется самостоятельно рассчитать размер, основанный на проценте.

В противном случае вы можете отрегулировать размер на основе определенного break points с помощью resource qualifiers; таких как h720dp (минимальная высота 720dp) или w600dp (минимальная ширина 600dp).

+1

Подождите, 'setDividerHeight' делает * не * применимо к LinearLayout, правильно? – Fattie

+0

@JoeBlow Нет, но если вы действительно этого хотели, вы должны создать «Drawable» размером, который хотите, а затем использовать ['setDividerDrawable()'] (https://developer.android.com/ ссылка/Android/виджет/LinearLayout.html # setDividerDrawable (android.graphics.drawable.Drawable)). – Bryan

+0

Скажите, @Bryan Мне было интересно в терминах Android, какая разница между «квалификаторами ресурсов» и «квалификаторами конфигурации» (если есть)? Cheers – Fattie

2

Использование configuration qualifiers и обеспечивают различные Dimens:

например

// happy_spacer.xml 
<size android:height="@dimen/divider" /> 

// values/dimens.xml 
<dimen name="divider">8dp</dimen> 

// values-w720dp/dimens.xml 
<dimen name="divider">16dp</dimen> 

// values-w820dp/dimens.xml 
<dimen name="divider">24dp</dimen> 
1

соглашается с Bryan's answer и если вы используете divider внутри элемента списка вы можете использовать setDividerHeight() метод. Но если вы напрямую использовать разделитель внутри LinearLayout вы только linearLayout.setDividerDrawable();

Примечание:

Вы должны использовать 8px вместо 8dp или 8dip, если вы используете дп или купание Android масштабируется, что вниз в зависимости устройства dpi. Так что это немного меняется в зависимости от устройства в отзывчивом мире;), который выглядит немного уродливым. Итак, у ваш реальный вопрос вы должны использовать высоту в размере px, которое является четким и одинаковым для любого экрана ....

+0

Спасибо. (Вы правы, в какой-то степени, просто используя dp/dip обеспечивает некоторую реактивность!) – Fattie

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

  • Нет связанных вопросов^_^