我正在设计我的应用程序UI。我需要一个这样的布局:
(<和>是按钮)。问题是,我不知道如何确保TextView将填补剩余的空间,与两个按钮有固定的大小。
如果我使用fill_parent的文本视图,第二个按钮(>)不能显示。
我如何制作一个看起来像图像的布局?
我正在设计我的应用程序UI。我需要一个这样的布局:
(<和>是按钮)。问题是,我不知道如何确保TextView将填补剩余的空间,与两个按钮有固定的大小。
如果我使用fill_parent的文本视图,第二个按钮(>)不能显示。
我如何制作一个看起来像图像的布局?
当前回答
您可以使用将layout_width或layout_width设置为0dp(通过您想要填充剩余空间的方向)。 然后使用layout_weight使其填充剩余空间。
其他回答
来自woodshy的答案为我工作,它比Ungureanu Liviu的答案更简单,因为它不使用RelativeLayout。 为了清晰起见,我给出了我的布局:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:layout_width = "80dp"
android:layout_weight = "0"
android:layout_height = "wrap_content"
android:text="<"/>
<TextView
android:layout_width = "fill_parent"
android:layout_height = "wrap_content"
android:layout_weight = "1"/>
<Button
android:layout_width = "80dp"
android:layout_weight = "0"
android:layout_height = "wrap_content"
android:text=">"/>
</LinearLayout>
你可以使用高layout_weight属性。下面你可以看到一个布局,ListView占用了底部按钮的所有空闲空间:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".ConfigurationActivity"
android:orientation="vertical"
>
<ListView
android:id="@+id/listView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1000"
/>
<Button
android:id="@+id/btnCreateNewRule"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Create New Rule" />
<Button
android:id="@+id/btnConfigureOk"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Ok" />
</LinearLayout>
当使用相对布局时,你可以通过将一个视图锚定到它应该伸展的两个视图来进行视图拉伸。虽然指定的高度将被忽略,Android仍然需要一个高度属性,这就是为什么我写“0dp”。例子:
<View
android:id="@+id/topView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentTop="true"
android:layout_marginTop="8dp"/>
<View
android:id="@+id/stretchableView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_below="@id/topView"
android:layout_above="@+id/bottomView"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:adjustViewBounds="true"/>
<View
android:id="@id/bottomView"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="16dp"/>
使用Relativelayout来包装LinearLayout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:round="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text="<"/>
<TextView
android:layout_width = "fill_parent"
android:layout_height = "wrap_content"
android:layout_weight = "1"/>
<Button
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text=">"/>
</LinearLayout>
</RelativeLayout>`
如果<TextView>被放置在线性布局中,设置<和>的Layout_weight属性为0和1的TextView。
如果你使用RelativeLayout,对齐<和>到左边和右边,并设置“布局到左边”和“布局到右边”属性的TextView的id <和>。