我的LinearLayout
随屏幕方向而变化。在纵向模式下,它看起来很完美:
但在横向模式下它看起来像这样:
如何在两种模式下修复我的UI看起来一样?
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/border"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/imgfourth1"
android:layout_width="70dp"
android:layout_height="50dp"
android:layout_marginRight="25dp"
android:layout_marginLeft="25dp"
android:paddingTop="2dp"
android:src="@drawable/amlet1" />
<ImageView
android:id="@+id/imgfourth2"
android:layout_width="70dp"
android:paddingTop="2dp"
android:layout_height="50dp"
android:layout_marginRight="25dp"
android:contentDescription="@null"
android:src="@drawable/lnch1" />
<ImageView
android:id="@+id/imgfourth3"
android:layout_marginRight="25dp"
android:paddingLeft="20dp"
android:layout_width="70dp"
android:layout_height="50dp"
android:paddingTop="2dp"
android:contentDescription="@null"
android:src="@drawable/supper" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="20dp"
android:background="@drawable/border4"
android:orientation="horizontal" >
<TextView
android:id="@+id/txtfth1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="2dp"
android:layout_marginLeft="25dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:gravity="center"
android:contentDescription="@null"
android:text="Breakfast" />
<TextView
android:id="@+id/txtfth2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="25dp"
android:paddingLeft="10dp"
android:gravity="center"
android:paddingRight="35dp"
android:layout_marginTop="2dp"
android:contentDescription="@null"
android:text="Lunch" />
<TextView
android:id="@+id/txtfth3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginTop="2dp"
android:gravity="center"
android:paddingRight="30dp"
android:contentDescription="@null"
android:text="Supper" />
</LinearLayout>
</LinearLayout>
答案 0 :(得分:2)
你有3个LinearLayouts,1个外部和2个内部。在内部布局上放置android:layout_gravity="center_horizontal"
。这应该是两者的中心。
此外,您认为您的肖像有效不正确。注意右侧的空白区域。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/border"
android:orientation="vertical" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imgfourth1"
android:layout_width="70dp"
android:layout_height="50dp"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:paddingTop="2dp"
android:src="@drawable/amlet1" />
<ImageView
android:id="@+id/imgfourth2"
android:layout_width="70dp"
android:layout_height="50dp"
android:layout_marginRight="25dp"
android:contentDescription="@null"
android:paddingTop="2dp"
android:src="@drawable/lnch1" />
<ImageView
android:id="@+id/imgfourth3"
android:layout_width="70dp"
android:layout_height="50dp"
android:layout_marginRight="25dp"
android:contentDescription="@null"
android:paddingLeft="20dp"
android:paddingTop="2dp"
android:src="@drawable/supper" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/border4"
android:orientation="horizontal" >
<TextView
android:id="@+id/txtfth1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="25dp"
android:layout_marginTop="2dp"
android:contentDescription="@null"
android:gravity="center"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="Breakfast" />
<TextView
android:id="@+id/txtfth2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="25dp"
android:layout_marginTop="2dp"
android:contentDescription="@null"
android:gravity="center"
android:paddingLeft="10dp"
android:paddingRight="35dp"
android:text="Lunch" />
<TextView
android:id="@+id/txtfth3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginTop="2dp"
android:contentDescription="@null"
android:gravity="center"
android:paddingRight="30dp"
android:text="Supper" />
</LinearLayout>
</LinearLayout>
答案 1 :(得分:2)
补充taxeeta的答案,只需为内部LinearLayout标记添加android:layout_gravity="center_horizontal"
。
答案 2 :(得分:1)
您可以创建两种不同的布局,一种用于纵向模式,另一种用于横向模式。这将解决您的问题。
Keep your
1. portrait mode layout in res/layout folder and
2. landscape mode layout in res/layout-land folder.
Android将根据您的方向采取适当的布局。
*编辑:单一布局* **
如果您想使用单一布局进行纵向和横向定位,那么以下内容可以帮助您
我使用了android:weightsum
和android:layout_weight
来使其看起来合适。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="100">
<ImageView
android:id="@+id/imgfourth1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="33"
android:src="@drawable/ic_launcher" />
<ImageView
android:id="@+id/imgfourth2"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="33"
android:src="@drawable/ic_launcher" />
<ImageView
android:id="@+id/imgfourth3"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="33"
android:src="@drawable/ic_launcher" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="20dp"
android:orientation="horizontal"
android:weightSum="100" >
<TextView
android:id="@+id/txtfth1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="33"
android:gravity="center_horizontal"
android:text="Breakfast" />
<TextView
android:id="@+id/txtfth2"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="33"
android:gravity="center_horizontal"
android:text="Lunch" />
<TextView
android:id="@+id/txtfth3"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="33"
android:gravity="center_horizontal"
android:text="Supper" />
</LinearLayout>
答案 3 :(得分:0)
尝试使用以下行:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:weightSum="3"
android:orientation="horizontal">
<ImageView
android:id="@+id/imgfourth1"
android:layout_width="0dip"
android:layout_height="50dp"
android:layout_weight="1"
android:src="@drawable/amlet1" />
<ImageView
android:id="@+id/imgfourth2"
android:layout_width="0dip"
android:layout_height="50dp"
android:layout_weight="1"
android:src="@drawable/lnch1" />
<ImageView
android:id="@+id/imgfourth3"
android:layout_width="0dip"
android:layout_height="50dp"
android:layout_weight="1"
android:src="@drawable/supper" />
</LinearLayout>
大多数情况下,你应该认为你填满了屏幕,然后根据你的需要进行划分,因此它适用于风景,肖像或甚至不同的密度。 而且我还建议你把图像的高度放到不同密度尺寸的文件夹中,这样它也可以变化。
答案 4 :(得分:0)
简单地把android:layout-weight =&#34; 33&#34; 这将为所有三个元素提供33%的空间,并且适合任何方向的任何分辨率