【发布时间】:2020-11-23 02:19:06
【问题描述】:
我尝试将RelativeLayout 和LinearLayout 组合使用,其中充满了TextViews 和底部的按钮。我在 MainActivity 中编写了一个序列,将方向从水平更改为垂直,反之亦然。所以基本上我不得不在列中转行。
这里是xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="10dp"
android:paddingRight="10dp" >
<LinearLayout
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="0dp"
android:paddingTop="40dp"
android:paddingRight="16dp"
android:orientation="horizontal"
android:gravity="top"
tools:context=".MainActivity">
<TextView
android:id="@+id/textv1"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="left"
android:text="@string/text1"
/>
<TextView
android:id="@+id/textv2"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="@string/text2"/>
<TextView
android:id="@+id/textv3"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="@string/text3"/>
<TextView
android:id="@+id/textv4"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="@string/text4"/>
</LinearLayout>
<LinearLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center"
tools:context=".MainActivity">
<TextView
android:id="@+id/textv5"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:text="@string/text5"/>
<TextView
android:id="@+id/textv6"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="@string/text6"/>
<TextView
android:id="@+id/textv7"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="@string/text7"/>
<TextView
android:id="@+id/textv8"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="@string/text8"/>
</LinearLayout>
<LinearLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="bottom"
android:foregroundGravity="right"
tools:context=".MainActivity">
<TextView
android:id="@+id/textv9"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="bottom"
android:text="@string/text9"/>
<TextView
android:id="@+id/textv10"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="@string/text10" />
<TextView
android:id="@+id/textv11"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="@string/text11"/>
<TextView
android:id="@+id/textv12"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="@string/text12"/>
</LinearLayout>
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
应该是这样的:
但它会变成这样:
只有中心线保持在正确的位置,其他的堆叠在一起。
【问题讨论】:
-
使用 TableLayout 可能会有更好的运气:developer.android.com/reference/android/widget/TableLayout
-
我只需要使用:线性和相对。
-
@Soni,Android 提供了使用手机配置选择应用程序资源的选项。这意味着您可以在不同的
layout目录中创建两个具有相同名称的布局文件,一个用于纵向,一个用于横向。 Read more here 关于处理配置更改。我向你保证——这将是最简单的方法。 SO答案与示例解决方案相关:stackoverflow.com/a/4858052/7210237 -
@JeneaVranceanu,我知道,但我不必使用屏幕的方向,只需在 Relative 中更改 LinearLayout 的方向
标签: java android android-studio android-layout