Ответ 1
Чтобы сделать вес эффективным, вам также необходимо установить ширину ваших текстовых элементов на 0dp.
android:layout_width="0dp"
У меня есть макет с тремя элементами, и его ориентация "горизонтальная"
Я хочу исправить размер, который каждый элемент занимает в моем макете.
первый элемент должен занимать 40% от общего объема, тогда второй элемент должен занимать 5%, а третий должен занимать оставшееся 55% пространства.
Мой макет выглядит следующим образом:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="100" >
<TextView
android:id="@+id/outletname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="40"
android:text="@string/outlet_name2" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"
android:text=": " />
<TextView
android:id="@+id/outletnamevalue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="55"
android:text="abcdefttt" />
</LinearLayout>
</LinearLayout>
текст в "TextView" будет меняться динамически, поэтому я хочу сохранить постоянное пространство для элементов независимо от содержимого в представлениях...
Чтобы сделать вес эффективным, вам также необходимо установить ширину ваших текстовых элементов на 0dp.
android:layout_width="0dp"
Я использую эту формулу:
layout_weight=(weightSum-PercentageYouWant*weightSum)/(TotalElements-1)
первый элемент должен занимать 40% от общего объема, тогда второй элемент должен занимать 5%, а третий должен занимать оставшееся 55% пространства.
1-й элемент:
(100-0.4*100)/(3-1)="30"
2-й элемент:
(100-0.05*100)/(3-1)="47.5"
3-й элемент:
(100-0.55*100)/(3-1)="22.5"
so 40% + 5% + 55% = 100%
layout_weight="30" + layout_weight="47.5" + layout_weight="22.5" = weightSum="100"
как я это понимаю.
здесь пример (кнопки предназначены только для графической ссылки)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="120" >
<!-- WeightSum=120 and I will add 4 elements, so TotalElements=4 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="36"
android:orientation="vertical" >
<!-- I want this LinearLayout to be 10%, so (120-10%*120)/(4-1)=36 -->
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="10%" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="32"
android:orientation="vertical" >
<!-- I want this LinearLayout to be 20%, so (120-20%*120)/(4-1)=32 -->
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="20%" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="28"
android:orientation="vertical" >
<!-- I want this LinearLayout to be 30%, so (120-30%*120)/(4-1)=28 -->
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="30%" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="24"
android:orientation="vertical" >
<!-- I want this LinearLayout to be 40%, so (120-40%*120)/(4-1)=24 -->
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="40%" />
</LinearLayout>
</LinearLayout>