Ответ 1
Вы не устанавливаете свойство layout_weight
. Ваш код читает weight="1"
, и он должен читать android:layout_weight="1"
.
Я всегда читал об этой забавной весовой ценности в документах 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 вещи, которые нужно запомнить:
Пример:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="5">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="2" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="3" />
</LinearLayout>
И результат:
Это android:layout_weight
. Вес можно использовать только в LinearLayout
. Если ориентация linearlayout является вертикальной, используйте android:layout_height="0dp"
, и если ориентация горизонтальная, используйте android:layout_width = "0dp"
. Он будет работать отлично.
Это изображение суммирует линейный макет.
Вы можете перейти по этой ссылке для получения дополнительной информации по теме. Just Maths - Просмотр, просмотр групп и макетов
Видеоруководство по линейной компоновке: ширина, высота и вес
Попробуйте установить layout_width
обеих кнопок на "0dip" и weight
обеих кнопок на 0.5
LinearLayout поддерживает присвоение веса отдельным детям. Этот атрибут присваивает виду значение важность "и позволяет ему расширяться для заполнения любого оставшегося пространства в родительском представлении. Вес по умолчанию равен нулю
чтобы назначить любое Остальное/Дополнительное пространство между дочерним. (а не общее пространство)
пробел присваивается дочернему элементу = (индивидуальный вес ребенка)/(сумма веса каждого ребенка в линейной компоновке)
Пример (1): если есть три текстовых поля, а два из них объявляют вес 1, а третий не имеет веса (0), затем Оставшееся/Дополнительное пространство присваивается
1st text box = 1/(1+1+0)
2nd text box = 1/(1+1+0)
3rd text box = 0/(1+1+0)
Пример (2): допустим, у нас есть текстовая метка и два элемента редактирования текста в горизонтальной строке. У метки нет указателя макета, поэтому он занимает минимальное пространство, необходимое для рендеринга. Если layout_weight каждого из двух элементов редактирования текста установлен в 1, оставшаяся ширина в родительском макете будет разделена поровну между ними (потому что мы утверждаем, что они одинаково важны).
calculation :
1st label = 0/(0+1+1)
2nd text box = 1/(0+1+1)
3rd text box = 1/(0+1+1)
Если в первом текстовом поле есть layout_weight из 1, а во втором текстовом поле есть layout_weight из 2, то одна треть оставшегося пространства будет передана первой, а две трети - второй (потому что мы требуем, чтобы вторая важна).
calculation :
1st label = 0/(0+1+2)
2nd text box = 1/(0+1+2)
3rd text box = 2/(0+1+2)
В поле ширины кнопки замените wrap-content
на 0dp
.
Используйте атрибут layout_weight представления.
android:layout_width="0dp"
Вот как выглядит ваш код:
<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="0dp"
android:layout_height="wrap_content"
android:padding="10dip"
android:layout_weight="1" />
<Button
android:text="Not this time"
android:id="@+id/cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:padding="10dip"
android:layout_weight="1" />
</LinearLayout>
layout_weight используется для распределения любого оставшегося пространства в пропорции. В этом случае две кнопки имеют ширину "0dp". Таким образом, оставшееся пространство будет разделено на 1:1 среди них, т.е. Пространство будет разделено поровну между представлениями кнопок.
Как ответ @Manoj Seelan
Заменить android:layout_weight
С помощью android:weight
.
Когда вы используете Вес с LinearLayout
. вы должны добавить weightSum
в LinearLayout
и в соответствии с ориентацией вашего LinearLayout
вы должны установить 0dp
для ширины/высоты для всех LinearLayout
`ы представления детей
Пример:
Если Ориентация LinearLayout
равна Vertical
, тогда установите ширину всех просмотров LinearLayout
для детей с помощью 0dp
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="3">
<Button
android:text="Register"
android:id="@+id/register"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:padding="10dip"
android:layout_weight="2" />
<Button
android:text="Not this time"
android:id="@+id/cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:padding="10dip"
android:layout_weight="1" />
</LinearLayout>
Если ориентация LinearLayout
of is horizontal
, то установите высоту всех просмотров LinearLayout
для детей с помощью 0dp
.
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="3">
<Button
android:text="Register"
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:padding="10dip"
android:layout_weight="2" />
<Button
android:text="Not this time"
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:padding="10dip"
android:layout_weight="1" />
</LinearLayout>
Возможно, настройка обоих свойств layout_width кнопок на "fill_parent" будет делать трюк.
Я просто протестировал этот код, и он работает в эмуляторе:
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="hello world"/>
<Button android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="goodbye world"/>
</LinearLayout>
Обязательно установите layout_width на "fill_parent" на обеих кнопках.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/logonFormButtons"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:baselineAligned="true"
android:orientation="horizontal">
<Button
android:id="@+id/logonFormBTLogon"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/logon"
android:layout_weight="0.5" />
<Button
android:id="@+id/logonFormBTCancel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/cancel"
android:layout_weight="0.5" />
</LinearLayout>
В приведенном выше XML установите android:layout_weight
линейного макета как 2
:
android:layout_weight="2"
Кроме того, вам нужно добавить этот android:layout_width="0dp"
для просмотра детьми [представления кнопок] в LinerLayout
Вы должны написать так, как это работает для меня
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2">
<Button
android:text="Register"
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
android:layout_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"
android:layout_weight="1" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="Button 1" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="Button 2" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="Button 3" />
</LinearLayout>
Ниже приведены изменения (отмечены жирным шрифтом) в вашем коде:
<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="0dp" //changes made here
android:layout_height="wrap_content"
android:padding="10dip"
android:layout_weight="1" /> //changes made here
<Button
android:text="Not this time"
android:id="@+id/cancel"
android:layout_width="0dp" //changes made here
android:layout_height="wrap_content"
android:padding="10dip"
android:layout_weight="1" /> //changes made here
</LinearLayout>
Поскольку ваш LinearLayout имеет горизонтальную ориентацию, вам нужно будет сохранять ширину только 0dp. для использования весов в этом направлении. (Если бы ваша ориентация была вертикальной, вы бы сохранили свой рост только 0dp).
Поскольку существует 2 вида и вы разместили android:layout_weight="1"
для обоих видов, это означает, что он разделит два вида по горизонтали (или по ширине).
Замените wrap_content
на fill_parent
.
Это идеальный ответ на вашу проблему.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
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>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="#008">
<RelativeLayout
android:id="@+id/paneltamrin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
>
<Button
android:id="@+id/BtnT1"
android:layout_width="wrap_content"
android:layout_height="150dp"
android:drawableTop="@android:drawable/ic_menu_edit"
android:drawablePadding="6dp"
android:padding="15dp"
android:text="AndroidDhina"
android:textColor="#000"
android:textStyle="bold" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/paneltamrin2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
>
<Button
android:layout_width="wrap_content"
android:layout_height="150dp"
android:drawableTop="@android:drawable/ic_menu_edit"
android:drawablePadding="6dp"
android:padding="15dp"
android:text="AndroidDhina"
android:textColor="#000"
android:textStyle="bold" />
</RelativeLayout>
</LinearLayout>
Деятельность 1 состоит из названия TV ниже ET, электронной почты TV ниже ET, телефона TV ниже ET, DOB TV Infront of ET (Datepicker), Qualification TV ниже ET, Time TV Infront of ET (Timepicker должно быть с AM/PM), под представлением прокрутки назначьте одну кнопку (сохранить). После нажатия кнопки "Сохранить" необходимо отобразить одну ListView (содержащую Items5 с подробностями о человеке по умолчанию, как в упражнении 1), а сведения о человеке, которые мы вводим, должны быть добавлены в ListView сверху, означают всего 6 элементов, которые должны удалить все элементы6 и кнопки Обновить, удалить означает, что необходимо удалить из ListView, Обновление означает, что должен быть открыт один настраиваемый dailog (все детали edittexts должны быть видны) и обновить то, что мы вводим в действии 1, и его нужно обновить. может кто-нибудь помочь мне в этом, пожалуйста