我设计了两个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>
答案 0 :(得分:5)
我还不确定这是否可以解决您的问题,但是您可以尝试在包含的布局中添加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
告诉两种布局仅占用屏幕的一半。
答案 1 :(得分:3)
在您的第一个布局中,您有
android:layout_height="match_parent"
所以它占据了主要布局的整个高度。将其更改为
android:layout_height="wrap_content"
你应该好。
根视图应该是您希望在添加此布局的每个布局中显示的方式。
请注意
您还可以通过在
android:layout_*
标记中指定包含布局的根视图的所有布局参数(任何<include/>
属性)来覆盖它们。
答案 2 :(得分:1)
您应该在主布局上使用RelativeLayout。如果你使用LinearLayout,一个项目将始终显示在前一个元素之下,因为你的两个布局都是match_parent,第二个将不会显示。
答案 3 :(得分:0)
不幸的是,Android设计人员违反了旧的编程“最少惊喜的原则”。如果我将XML放入TextView中,它将显示在设计器中。如果我为第二个TextView添加xml,我希望它能显示,但不会。为什么?您已经遗漏了一些不需要的晦涩的属性,必须去Stackoverflow才能找到它。我很想知道有多少百分比的人能够成功设计Android应用程序,而无需参加论坛来解决布局问题。我说不到20%。