Intereting Posts
Чтение milliVolts в Android для pH-тестера Как получить точный размер каталога кеша: android Как настроить IntelliJ IDEA для приложений Android? Android VM сбой при запуске Mac Невозможно показать клавиатуру автоматически в SearchView Как реализовать увеличение анимации числа от 0 до 600 за 5 секунд на TextVIew на Android Как использовать шквал в приложении? Как кэшировать JSON для автономного использования AlertDialog с URL-адресами и текстом В Android Studio 2.1.3 экспериментальная градация не работает? Виджет экрана Android Lock Можете ли вы зарегистрировать приложение в меню «долгое нажатие кнопки питания»? Как я могу избавиться от «Пропущенных кадров». Приложение может делать слишком много работы на главной теме "error Обновление пользовательского интерфейса с использованием библиотеки привязки данных Как передать событие касания от родительского представления к дочернему виду

Android layout_width & layout_height, как это работает?

Я пытаюсь создать интерфейс, в котором пользователю будут отображаться две или более кнопки, если нажать кнопку, некоторые макеты будут отображаться для него. Для этой цели я использую SlidingDrawer .

Ну, меня путают свойства layout_width & layout_height .

Если я устанавливаю свойства, как показано ниже, на экране отображается только «Ручка 1».

android:layout_width="fill_parent" android:layout_height="wrap_content" 

Честно говоря, у меня недостаточно знаний об этих двух свойствах. Кто-нибудь может поделиться своими знаниями о них?

main.xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <SlidingDrawer android:id="@+id/slidingDrawer1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:handle="@+id/handle1" android:content="@+id/content1"> <Button android:text="Handle 1" android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/handle1"></Button> <LinearLayout android:id="@+id/content1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:background="#FF444444"> <Button android:text="Handle 1 Item 1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/item1"></Button> </LinearLayout> </SlidingDrawer> <SlidingDrawer android:id="@+id/slidingDrawer2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:handle="@+id/handle2" android:content="@+id/content2"> <Button android:text="Handle 2" android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/handle2"></Button> <LinearLayout android:id="@+id/content2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:background="#FF444444"> <Button android:text="Handle 2 Item 1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/item2"></Button> </LinearLayout> </SlidingDrawer> </LinearLayout> 

layout_width и layout_height представления предназначены для использования его родительским контейнером. Некоторые контейнеры игнорируют один или оба из них; Большинство почитают их. Вам нужно проконсультироваться с документацией контейнера (в вашем случае, SlidingDrawer), чтобы понять, как будут использоваться значения.

Вы не показываете полный файл main.xml, поэтому трудно точно сказать, что происходит. Это также поможет, если вы разместите образ того, что не так.

РЕДАКТИРОВАТЬ

После просмотра вашего полного макета, я думаю, что основная проблема заключается в том, что вы используете LinearLayout для размещения SlidingDrawers. Как отмечают документы для SlidingDrawer , они должны быть либо в FrameLayout, либо в RelativeLayout (фактически, в любом контейнере, который позволяет нескольким представлениям сидеть друг над другом).

Другая возможность заключается в том, что второй SlidingDrawer размещается непосредственно под первым. Попытайтесь изменить размер второй кнопки (например, сделайте текст длиннее) и посмотрите, выкачивает ли она по обе стороны кнопки 1.

Fill_parent = match_parent, и это означает, что он принимает ширину или высоту (которое когда-либо свойство указано в качестве) «родительского» контейнера

Wrap_content означает, что высота или ширина занимают высоту или ширину «ребенка»,

Вы хотите использовать весы вместо обычного match_parent или wrap_content.

Когда вы используете весы, вы хотите установить ширину в 0dp.

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:id="@+id/lowerLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="1.0" > <LinearLayout android:id="@+id/headerLayout" android:layout_width="0dp" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_weight=".7" > <Button android:id="@+id/previousMonthButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Previous" /> <TextView android:id="@+id/monthName" android:layout_width="0dip" android:layout_height="wrap_content" android:text="Large Text" android:layout_weight="1" android:textAppearance="?android:attr/textAppearanceLarge" android:gravity="center_horizontal" /> <Button android:id="@+id/nextMonthButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Next" /> </LinearLayout> <LinearLayout android:id="@+id/lowerLayout3" android:layout_width="0dp" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_weight=".3" > <Button android:id="@+id/addEvent" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/lowerLayout2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="1.0" > <LinearLayout android:id="@+id/monthView" android:layout_width="0dp" android:layout_height="match_parent" android:orientation="vertical" android:layout_weight=".7" > </LinearLayout> <ListView android:id="@+id/listView1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight=".3" > </ListView> </LinearLayout> </LinearLayout> 

Я думаю, вы пытаетесь добавить 2 скользящих ящика.

Размер SlidingDrawer определяет, сколько пространства будет занимать контент, как только он выскользнет, ​​так что SlidingDrawer обычно должен использовать match_parent для обоих его размеров, в этом случае один накладывается на другой, чтобы вы не могли видеть обработчик 2.

Если вы установили видимость «ушел» из первого SlidingDrawer, вы можете увидеть «Другой».

Обновить

Здравствуй ,

Попробуйте этот код, возможно, это поможет вам

 <?xml version="1.0" encoding="utf-8"?> 

 <SlidingDrawer android:id="@+id/slidingDrawer1" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:content="@+id/content1" android:handle="@+id/handle1" > <Button android:id="@+id/handle1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Handle 1" > </Button> <LinearLayout android:id="@+id/content1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#FF444444" android:gravity="center" android:orientation="vertical" > <Button android:id="@+id/item1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Handle 1 Item 1" > </Button> </LinearLayout> </SlidingDrawer>