Я всегда читал об этом забавном значении веса в документации Android. Теперь я хочу попробовать это в первый раз, но это не работает вообще.
Как я понял из документации это расположение:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="Register"
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
weight="1" />
<Button
android:text="Not this time"
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
weight="1" />
</LinearLayout>
следует создать две кнопки, которые выровнены по горизонтали и разделят пространство одинаково. Проблема в том, что две кнопки не растут, чтобы заполнить пространство.
Я бы хотел, чтобы кнопки росли и заполняли всю строку. Если обе кнопки настроены на соответствие родителю, отображается только первая кнопка, которая заполняет всю строку.
Ответы:
Вы не устанавливаете
layout_weight
собственность. Ваш код читает,weight="1"
и он должен читатьandroid:layout_weight="1"
.источник
3 вещи, которые нужно запомнить:
Пример:
И результат:
источник
addView(button, new LinearLayout.LayoutParams(0, height, 1));
Это верно, даже если вы надуваете макеты с правильными значениями ширины и веса.Это
android:layout_weight
. Вес может быть использован только вLinearLayout
. Если ориентация linearlayout - Вертикальная, тогда используйте,android:layout_height="0dp"
и если ориентация горизонтальная, тогда используйтеandroid:layout_width = "0dp"
. Это будет работать отлично.источник
Это изображение суммирует линейный макет.
Вы можете перейти по этой ссылке для получения дополнительной информации по теме. Just Maths - Просмотр, просмотр групп и макетов
Видеоруководство по линейной компоновке: ширина, высота и вес
Android Linear Layout Tutorial
источник
Попробуйте установить
layout_width
обе кнопки на «0dip», аweight
обе кнопки на0.5
источник
LinearLayout поддерживает назначение веса отдельным детям. Этот атрибут присваивает представлению значение важности и позволяет ему расширяться, чтобы заполнить все оставшееся пространство в родительском представлении. Вес по умолчанию равен нулю
расчет, чтобы назначить любой оставшийся / дополнительный пробел между дочерними. (не общая площадь)
пространство, присвоенное ребенку = (индивидуальный вес ребенка) / (сумма веса каждого ребенка в линейном расположении)
Пример (1): если есть три текстовых поля и два из них объявляют вес 1, а третьему не присвоен вес (0), тогда оставшееся / дополнительное пространство присваивается
Пример (2) : допустим, у нас есть текстовая метка и два элемента редактирования текста в горизонтальной строке. В метке не указан layout_weight, поэтому он занимает минимальное пространство, необходимое для визуализации. Если для layout_weight каждого из двух элементов редактирования текста задано значение 1, оставшаяся ширина в родительском макете будет разделена поровну между ними (поскольку мы утверждаем, что они одинаково важны).
Если первое текстовое поле имеет layout_weight, равный 1, а второе текстовое поле имеет layout_weight, равный 2, то одна треть оставшегося пространства будет отдана первому, а две трети - второму (поскольку мы утверждаем, что второе более важный).
источник
В поле ширины кнопки замените
wrap-content
на0dp
.Используйте атрибут layout_weight вида.
Вот как будет выглядеть ваш код:
layout_weight используется для распределения оставшегося пространства в пропорциях. В этом случае две кнопки имеют ширину 0dp. Таким образом, оставшееся пространство будет разделено на пропорции 1: 1 между ними, т.е. пространство будет разделено поровну между представлениями кнопок.
источник
Как ответ @Manoj Seelan
Заменить
android:layout_weight
Withandroid:weight
.Когда вы используете вес с
LinearLayout
. Вы должны добавитьweightSum
вLinearLayout
и в соответствии с ориентацией вашейLinearLayout
вы должны заходящей0dp
на ширин / высоты для всехLinearLayout
`S мнения детейПример :
Если Ориентация
Linearlayout
- этоVertical
, установите ширину всехLinearLayout
дочерних представлений с помощью0dp
Если ориентация
Linearlayout
естьhorizontal
, то установите высоту всехLinearLayout
дочерних представлений с помощью0dp
.источник
Возможно, установка обеих свойств layout_width кнопок для «fill_parent» подойдет.
Я только что проверил этот код, и он работает в эмуляторе:
Обязательно установите для layout_width значение «fill_parent» на обеих кнопках.
источник
источник
В приведенном выше XML, установите
android:layout_weight
линейный макет как2
:android:layout_weight="2"
источник
Кроме того, вы должны добавить это
android:layout_width="0dp"
для просмотра детьми [Button views] ofLinerLayout
источник
Вы должны написать так, это работает для меня
источник
Ниже приведены изменения (отмечены жирным шрифтом ) в вашем коде:
Поскольку ваш LinearLayout имеет горизонтальную ориентацию, вам нужно будет сохранять ширину только 0dp. для использования весов в этом направлении. (Если бы ваша ориентация была вертикальной, вы бы сохранили свой рост только 0dp) .
Поскольку есть два вида, и вы разместили
android:layout_weight="1"
оба вида, это означает, что он разделит два вида по горизонтали (или по ширине).источник
источник
Это идеальный ответ вашей проблемы
источник
Заменить
wrap_content
наfill_parent
.источник
источник