Android - LinearLayout/RelativeLayout 对齐
Android - LinearLayout/RelativeLayout Alignment
我正在尝试创建一个简单的 UI,看起来像这样
我是 android 的新手,一直在尝试不同类型的布局 (Linear/Relative),我相信线性布局可能是可行的方式(我希望增加 ListView 的数量在某个阶段是动态的,但现在 2 很好)。
我应该使用线性布局还是相对布局,或者两者的某种组合来实现此目的。
这是我的 XML,我似乎无法让按钮右对齐,即使它的重力设置为右。我愿意接受任何关于如何解决这个问题的建议,或者是否有更好的方法
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.9"
android:orientation="horizontal" >
<ListView
android:id="@+id/lv1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
/>
<ListView
android:id="@+id/lv2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.1"
android:orientation="horizontal" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="New Button"
android:id="@+id/button"
android:gravity="right" />
</LinearLayout>
编辑:这是 UI 目前的样子
好的,你可以做一件事。
<RelativeLayout>
<LinearLayout> <!-- horizontal orientation with weightsum 2 -->
<LinearLayout> <!-- vertical orientation with layout weight 1 and width 0dp -->
</LinearLayout>
<LinearLayout> <!-- vertical orientation with layout weight 1 and width 0dp -->
</LinearLayout>
</LinearLayout>
<Button /> <!-- alignParentBottom = true and alignParentLeft = true -->
</RelativeLayout>
只需删除 Button 周围的 LinearLayout 或将其方向设置为垂直。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.9"
android:orientation="horizontal" >
<ListView
android:id="@+id/lv1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"/>
<ListView
android:id="@+id/lv2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"/>
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="New Button"
android:id="@+id/button"
android:gravity="right" />
</LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/ll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_marginTop="18dp"
android:layout_above="@+id/btnButton"
android:weightSum="2"
android:orientation="horizontal" >
<ListView
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="1">
</ListView>
<ListView
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="1">
</ListView>
</LinearLayout>
<Button
android:id="@+id/btnButton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Button"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
我想你可以这样试试....
<LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_gravity="right" android:layout_weight="0.1" android:gravity="right" android:orientation="horizontal" > <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Button" /> </LinearLayout>
避免布局嵌套。
一个单 RelativeLayout就够了。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!-- Set the Button, first: Bottom and right aligned -->
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="New Button"
/>
<!-- Trick: set a dummy View in the middle of the screen -->
<View
android:id="@+id/dummy"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_centerInParent="true"
/>
<!-- Now the ListViews: -->
<!-- One above the button and to the left of the dummy -->
<ListView
android:id="@+id/lv1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/button"
android:layout_toLeftOf="@id/dummy"
/>
<!-- One above the button and to the right of the dummy -->
<ListView
android:id="@+id/lv2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/button"
android:layout_toRightOf="@id/dummy"
/>
</RelativeLayout>
我正在尝试创建一个简单的 UI,看起来像这样
我是 android 的新手,一直在尝试不同类型的布局 (Linear/Relative),我相信线性布局可能是可行的方式(我希望增加 ListView 的数量在某个阶段是动态的,但现在 2 很好)。
我应该使用线性布局还是相对布局,或者两者的某种组合来实现此目的。
这是我的 XML,我似乎无法让按钮右对齐,即使它的重力设置为右。我愿意接受任何关于如何解决这个问题的建议,或者是否有更好的方法
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.9"
android:orientation="horizontal" >
<ListView
android:id="@+id/lv1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
/>
<ListView
android:id="@+id/lv2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.1"
android:orientation="horizontal" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="New Button"
android:id="@+id/button"
android:gravity="right" />
</LinearLayout>
编辑:这是 UI 目前的样子
好的,你可以做一件事。
<RelativeLayout>
<LinearLayout> <!-- horizontal orientation with weightsum 2 -->
<LinearLayout> <!-- vertical orientation with layout weight 1 and width 0dp -->
</LinearLayout>
<LinearLayout> <!-- vertical orientation with layout weight 1 and width 0dp -->
</LinearLayout>
</LinearLayout>
<Button /> <!-- alignParentBottom = true and alignParentLeft = true -->
</RelativeLayout>
只需删除 Button 周围的 LinearLayout 或将其方向设置为垂直。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.9"
android:orientation="horizontal" >
<ListView
android:id="@+id/lv1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"/>
<ListView
android:id="@+id/lv2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"/>
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="New Button"
android:id="@+id/button"
android:gravity="right" />
</LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/ll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_marginTop="18dp"
android:layout_above="@+id/btnButton"
android:weightSum="2"
android:orientation="horizontal" >
<ListView
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="1">
</ListView>
<ListView
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="1">
</ListView>
</LinearLayout>
<Button
android:id="@+id/btnButton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Button"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
我想你可以这样试试....
<LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_gravity="right" android:layout_weight="0.1" android:gravity="right" android:orientation="horizontal" > <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Button" /> </LinearLayout>
避免布局嵌套。
一个单 RelativeLayout就够了。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!-- Set the Button, first: Bottom and right aligned -->
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="New Button"
/>
<!-- Trick: set a dummy View in the middle of the screen -->
<View
android:id="@+id/dummy"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_centerInParent="true"
/>
<!-- Now the ListViews: -->
<!-- One above the button and to the left of the dummy -->
<ListView
android:id="@+id/lv1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/button"
android:layout_toLeftOf="@id/dummy"
/>
<!-- One above the button and to the right of the dummy -->
<ListView
android:id="@+id/lv2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/button"
android:layout_toRightOf="@id/dummy"
/>
</RelativeLayout>