Intereting Posts
Android Read WhatsApp Data Начало работы с приложением VOIP для iOS или Android? Поставщик плавного местоположения не получает местоположение, если GPS не включен Установить цвет фона программно ClassCastException: android.support.v7.widget.LinearLayoutCompat $ LayoutParams нельзя отбрасывать в android.widget.LinearLayout $ LayoutParams Android – восстановление из состояния низкой памяти Как получить URI моей базы данных SQLite в приложении для Android? Можно ли использовать контент: // в качестве источника для элемента <audio> в WebView Как указать нулевое значение для ресурса строки в xml в Android? Как получить весь список детей от Firebase android FragmentTabHost не создает вид внутри Фрагмент в андроиде Почему getView, getY, setX и setY ImageView не представляют фактическое значение в Relative Layout? Является ли метод optionMode совместимым с ExpandableListView? Ограничение на страницу просмотра ViewPager После обновления службы Google Play до версии 13 я получил сообщение об ошибке

Android Drawable: определение ширины формы в процентах в файле XML?

Я пытаюсь создать простой Drawable, который я хочу установить в качестве фона для представления (используя setBackgroundDrawable ). Я просто хочу разделить фон с возможностью рисования на два равных прямоугольника (50% – 50%), сначала нужно заполнить черным, второе – белым:

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/back_color_1"> <shape android:shape="rectangle"> <solid android:color="#000000" /> </shape> </item> <item android:id="@+id/back_color_2"> <shape android:shape="rectangle"> <solid android:color="#FFFFFF" /> </shape> </item> </layer-list> 

Как я могу указать, что каждая фигура должна иметь ширину 50% в файле с возможностью рисования XML? Что-то вроде android: width = "50%" .

(Я работаю над Android 3.0, но я думаю, что это общий вопрос для Android).

PS: Вы можете сделать это в CSS или XAML.

Solutions Collecting From Web of "Android Drawable: определение ширины формы в процентах в файле XML?"

Вы не можете указать процент . Вам нужно указать значение Dimension.

android:width определяется здесь: http://developer.android.com/reference/android/R.attr.html#width :

(Акцент мой)

Должно быть значение измерения , которое является числом с плавающей запятой, добавленным с помощью блока, такого как «14.5sp». Доступными единицами являются: px (пиксели), dp (независимые от плотности пиксели), sp (масштабированные пиксели на основе предпочтительного размера шрифта), в дюймах, мм (миллиметры).

Определение каждого типа измерений см. По адресу : http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

Вам нужно будет создать свой собственный атрибут (см. Стиль ) и выполнить вычисления самостоятельно в onDraw(...) .

См. Два этих вопроса и ссылки на них:

  • Определение пользовательских атрибутов

  • Объявление атрибутов стиля в Android

Android: layout_weight = ". 20" лучший способ реализовать в процентах

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/logTextBox" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight=".20" android:maxLines="500" android:scrollbars="vertical" android:singleLine="false" android:text="@string/logText" > </TextView> </LinearLayout> 

Нет истинного значения процента, но вы можете приблизиться.

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

Единственный другой способ, который я знаю, чтобы разделить что-либо, – это использовать 2 представления, каждый со своим собственным цветом bg, и каждому присваивается одинаковое положительное значение для атрибута android: layout_weight (т.е. 50/50). Они затем разделит доступное пространство.

надеюсь это поможет!

Способ, которым я нашел это, – создать собственный класс, наследующий RelativeLayout, где я переопределяю метод onMeasure. На этом этапе высота представления известна, поэтому я выбрал фон и вручную установил вставку элементов, используя setLayerInset .

  LayerDrawable bg = (LayerDrawable)getBackground(); int h = getMeasuredHeight(); bg.setLayerInset(1, 0, 0, 0, h/2); 

Однако этот метод немного громоздкий. В большинстве случаев ответа, предоставленного Крисом, должно быть достаточно.

Лучший способ, как сказал swapnil, – использовать layout_weight в LinearLayout. Если вы собираетесь горизонтально, установите layout_width в «fill_parent», а затем установите layout_weight в процентах, который вы хотите. Начните с чего-то вроде ниже и поиграйте с значениями layout_width, чтобы получить представление об этом (или добавьте больше видов, чтобы лучше понять).

 <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation = "horizontal" > <View android:layout_width="fill_parent" android:layout_height="30dip" android:layout_weight="0.5" android:background="#aaffaa" /> <View android:layout_width="fill_parent" android:layout_height="30dip" android:layout_weight="0.5" android:background="#aaaaff" /> </LinearLayout>