Размер макета Android

Я новичок в разработке Android, и у меня вопрос о настройке веса в линейном макете.

Я пытаюсь создать строку с двумя настраиваемыми кнопками и настраиваемым текстом редактирования. Текст редактирования должен занимать столько места, сколько его содержимое, и две кнопки должны расширяться горизонтально, чтобы заполнить остальную часть доступного пространства в строке. Как это…

| [#Button++#] [#Button--#] [et] | 

После нескольких попыток это ближе всего к тому, что я хочу, хотя это кажется слишком сложным.

 | [Button] [Button] [###ET###] | 

 <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:layout_weight="1" > <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal|center_vertical" > <RelativeLayout android:id="@+id/btn_plus_container" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ImageButton android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/btn_plus" android:background="@drawable/btn" android:layout_centerInParent="true" ></ImageButton> <TextView android:textColor="#FAFAF4" android:id="@+id/tv_dice_plus" android:text="@string/tv_plus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" ></TextView> </RelativeLayout> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal|center_vertical" > <RelativeLayout android:id="@+id/btn_minus_container" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ImageButton android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/btn_minus" android:background="@drawable/btn" android:layout_centerInParent="true" ></ImageButton> <TextView android:textColor="#FAFAF4" android:id="@+id/btn_minus" android:text="@string/tv_minus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" ></TextView> </RelativeLayout> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal|center_vertical" > <EditText android:textColor="#FAFAF4" android:text="@string/et_output" android:id="@+id/et_output" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number" android:selectAllOnFocus="true" android:minWidth="50sp" android:maxWidth="50sp" android:background="@drawable/tv_black_background3" android:textColorHighlight="#c30505" ></EditText> </LinearLayout> </LinearLayout> 

Насколько я понимаю, установка [android: layout_weight = "2"] для линейных макетов, удерживающих кнопки, должна заставлять их занимать больше места, чем текст редактирования, но для меня это делает наоборот, делая их вдвое меньше.

 | [Btn] [Btn] [#####et#####] | 

Я пробовал так много разных комбинаций, о которых я даже не помню, и никто не работал.

Solutions Collecting From Web of "Размер макета Android"

Это не работает, потому что вы используете fill_parent как ширину. Вес используется для распределения оставшегося пустого пространства или удаления пространства, когда общая сумма больше, чем LinearLayout. Вместо этого установите ширину в 0dip, и она будет работать.

android:Layout_weight можно использовать, когда вы не прикрепляете значение исправления к вашей ширине уже как fill_parent и т. Д.

Сделайте что-то вроде этого:

 <Button> Android:layout_width="0dp" Android:layout_weight=1 -----other parameters </Button> 

Подумайте так, будет проще

Если у вас есть 3 кнопки, и их вес составляет 1,3,1 соответственно, он будет работать как таблица в формате HTML

Предоставьте 5 частей для этой линии: 1 часть для кнопки 1, 3 для кнопки 2 и 1 для кнопки 1

В linearLayout установите WeightSum = 2;

И распределите вес для своих детей, как вы хотите, чтобы они отображались. Я дал весу = «1» ребенку. Так оба будут распределять половину всего.

  <LinearLayout android:id="@+id/linear1" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="2" android:orientation="horizontal" > <ImageView android:id="@+id/ring_oss" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/ring_oss" /> <ImageView android:id="@+id/maila_oss" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/maila_oss" /> </LinearLayout> 

Весовые значения 0-1 распределяют доступное пространство (после установки layout_width = "0px") пропорционально значению веса. Просмотреть элементы с весом, не указанным (без ввода веса), получить вес 0, что означает, что они не расширяются.

Простой альтернативой без необходимости в весах является прикрепление рамки к представлению с текстом, в котором говорится, что он расширяется с минимального уровня, необходимого для текста (wrap_content), на свободное пространство EditText: android: layout_width = "wrap_content" android: ellipsize = "marquee"

Я предположил бы установить ширину EditText s на wrap_content и поместить две кнопки в LinearLayout чья ширина fill_parent и вес fill_parent 1.

Еще одна причина, по которой я нашел (туманную, как это может звучать). Нижеследующее не работает.

LinearLayout vertical

LinearLayout высота заливка + вес

LinearLayout высота заливка + вес

LinearLayout высота заливка + вес

EndLinearLayout

Что такое работа

RelativeLayout

LinearLayout vertical

LinearLayout высота заливка + вес

LinearLayout высота заливка + вес

LinearLayout высота заливка + вес

EndLinearLayout

EndRelativeLayout

Это звучит расплывчато с помощью корневого макета с Linear и весами под ним не получилось. И когда я говорю «не работает», я имею в виду, что после того, как я просмотрел графическую компоновку между различными разрешениями, согласованность экрана нарушила большое время.

 <LinearLayout android:id="@+id/linear1" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="9" android:orientation="horizontal" > <ImageView android:id="@+id/ring_oss" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" android:src="@drawable/ring_oss" /> <ImageView android:id="@+id/maila_oss" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" android:src="@drawable/maila_oss" /> <EditText android:id="@+id/edittxt" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" android:src="@drawable/maila_oss" /> </LinearLayout>