Второй макет не отображается с тегом include в студии android

Я разработал два макета Android, которые нужно показать по порядку. Итак, первый макет должен отображаться в верхней части страницы, а второй макет должен отображаться внизу страницы. Однако следующий код показывает только первый макет. Как я могу показать второй макет тоже?

Основной макет

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/first_layout"/> <include layout="@layout/second_layout"/> </LinearLayout> 

Первый макет xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="net.simplifiedcoding.androidloginapp.UserProfile"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Large Text" android:id="@+id/textView3" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> </LinearLayout> 

Второй макет

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:orientation="vertical" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Name" android:id="@+id/textView" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editTextName" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Address" android:id="@+id/textView2" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editTextAddress" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Insert" android:onClick="insert" android:id="@+id/button" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textViewResult" /> </LinearLayout> 

Я еще не уверен, что это решит вашу проблему, но можете ли вы попробовать добавить android:layout_width и android:layout_height в ваш включенный макет, а также макет?

 <include layout="@layout/first_layout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> <include layout="@layout/second_layout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> 

Добавлена ​​информация

Причина, по которой у вас возникла эта проблема, заключается в том, что в вашем макете используется match_parent для высоты. Это означает, что в первом макете он будет соответствовать размеру родителя (который в этом случае является всем экраном), таким образом, первый макет будет занимать весь экран, а второй макет не появится.

В этом решении вы говорите, что оба макета потребляют только половину экрана, используя layout_weight .

В вашем первом макете у вас есть

 android:layout_height="match_parent" 

Поэтому он занимает всю высоту вашего основного макета. Измените это на

 android:layout_height="wrap_content" 

И вы должны быть хорошими.

Из документов

Корневой вид должен быть именно тем, как вы хотите, чтобы он отображался в каждом макете, к которому вы добавляете этот макет.

Обратите внимание, что

Вы также можете переопределить все параметры макета (любые атрибуты android:layout_* ) корневого представления включенного макета, указав их в <include/> .

Вы должны использовать RelativeLayout на своем основном макете. Если вы используете LinearLayout, один элемент всегда будет показан ниже предыдущего элемента, и так как ваш макет совпадает с match_parent, второй не будет показан.

Intereting Posts