我在纵向模式下有一个布局。但是它在横向模式下不会显示:
以下是.xml文件的概述:
<RelativeLayout>
<LinearLayout android:orientation="horizontal">
<TextView />
<TextView />
</LinearLayout>
<TextView />
<LinearLayout android:orientation="vertical">
<LinearLayout android:orientation="horizontal">
<LinearLayout android:orientation="vertical">
<TextView />
<TextView />
</LinearLayout>
<LinearLayout android:orientation="vertical">
<Spinner />
<Spinner />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<Button/>
</RelativeLayout>
这是实际的.xml文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:id="@+id/departure_block"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_marginTop="40px">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="17sp"
android:text="You are departing from " />
<TextView android:id="@+id/editTextDepartureStation"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="" android:layout_weight="2" android:textSize="17sp" />
</LinearLayout>
<TextView android:id="@+id/info_block" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="17sp"
android:layout_below="@id/departure_block" android:text="Please select remaining journey details: "
android:layout_marginTop="40px" />
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_below="@id/info_block"
android:layout_height="fill_parent">
<!-- Labels and widgets -->
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_marginTop="20px">
<!-- Labels -->
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="2" android:paddingBottom="10px">
<TextView android:layout_width="wrap_content"
android:layout_height="70px" android:text="@string/destinationStation"
android:layout_weight="2" android:paddingTop="15px"
android:textSize="17sp" />
<TextView android:layout_width="wrap_content"
android:layout_height="70px" android:text="@string/numTickets"
android:layout_weight="2" android:paddingTop="15px"
android:textSize="17sp" />
</LinearLayout>
<!-- End labels -->
<!-- Widgets -->
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="1">
<Spinner android:id="@+id/spinnerDestinationStation"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:prompt="@string/destination_prompt" android:layout_weight="1"
android:textSize="17sp" />
<Spinner android:id="@+id/spinnerNumTickets"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:prompt="@string/numTickets_prompt" android:layout_weight="1"
android:textSize="17sp" />
</LinearLayout>
<!-- End widgets -->
</LinearLayout>
<!-- End labels and widgets -->
</LinearLayout>
<Button android:id="@+id/buttonPurchase" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="Purchase ticket"
android:layout_weight="1" android:textSize="17sp" android:background="@drawable/custom_button"
android:textColor="#ffffff" android:shadowColor="#000000"
android:shadowRadius="1.5" android:layout_gravity="bottom"
android:layout_alignParentBottom="true" android:shadowDx="1"
android:shadowDy="1" android:layout_margin="10px" />
</RelativeLayout>
我理解为什么按钮出现在微调器的顶部(它正确地对齐到父RelativeLayout的底部),但我无法创建阻止重叠问题的xml。
我想要任何滚动或ScrollView来封装按钮。如果按钮显示在显示屏底部之外也不成问题 - 只要可以通过滚动访问它。这就是我努力实现的目标。
有人可以帮忙吗?
非常感谢。
答案 0 :(得分:2)
您的布局对于屏幕来说太大了,因此您必须将info_block
包裹在ScrollView
中,并将其与顶部以及底部的顶部对齐按钮。
这意味着你必须在 info_block之前定义Button ,这样你就可以将info_block的底部对齐到按钮的顶部。
要澄清一下,问题是你的info_block的下边缘没有绑定任何东西,所以绘制按钮,你将有一个优势。您应该始终首先在相对布局中绘制固定元素,以便为未绑定元素提供边缘位置。
答案 1 :(得分:1)
也许你最好的选择是让相对布局滚动我相信它被称为?这样,用户可以用手指上下移动整个布局。
答案 2 :(得分:0)
我明天要检查,但fillViewport似乎是我想要的ScrollView属性。解释于:ScrollView’s handy trick。
编辑添加此确实解决了我的问题。两个重要的事情是:
要在ScrollView中使用fillViewport =“true”,这可确保子元素展开以填充显示。仅此一项是不够的,接下来要确保:
最后一个元素之前 Button有android:layout_weight =“1.0”以确保它填充由具有fillViewport =“true”的ScrollView创建的空间。