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#####] |


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

548   8  

8 ответов:

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

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

сделать что-то вроде этого :

<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"

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

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

LinearLayout vertical

LinearLayout высота fillparent + вес

LinearLayout высота fillparent + вес

LinearLayout высота fillparent + вес

EndLinearLayout

Что же получилось

RelativeLayout

LinearLayout vertical

LinearLayout высота fillparent + вес

LinearLayout высота fillparent + вес

LinearLayout высота fillparent + вес

EndLinearLayout

EndRelativeLayout

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

<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>

Comments

    Ничего не найдено.