2

我正在尝试创建以下布局,但遇到了一些困难:

在此处输入图像描述

困难在于让Button左边的 填补右边没有占用的所有可用空间ImageButton

这是我正在使用的 axml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  android:gravity="center_vertical">
  <LinearLayout
      android:id="@+id/layout1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:orientation="horizontal">
      <Button
          android:background="@null"
          android:text="The Button Text"
          android:id="@+id/btnText"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent" />
  </LinearLayout>
  <ImageButton
      android:id="@+id/imgSettings"
      android:layout_toRightOf="@id/layout1"
      android:background="@null"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentRight="true"
      android:src="@drawable/settings_light"
      android:layout_centerVertical="true" />
</RelativeLayout>

它看起来像这样:

我怎样才能让它显示在第一张图片中?

在此处输入图像描述

4

2 回答 2

2

您可以通过两种方式做到这一点 - 第一种是线性布局。你给文本一个 0dp 的宽度,但是告诉它在第一次测量后使用“layout_weight”属性来占用任何剩余的空间。Image 占据了它需要的空间,然后被文本元素一直推到右边:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/layout1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal">
  <Button
      android:background="@null"
      android:text="The Button Text"
      android:id="@+id/btnText"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_weight="1"
      android:gravity="left"
      />
  <ImageButton
      android:id="@+id/imgSettings"
      android:background="@null"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:src="@drawable/settings_light"
      android:layout_centerVertical="true"
      android:layout_weight="0" />
</LinearLayout>

第二个是相对布局 - 你再次给文本一个 0dp 的宽度,但你告诉它左边缘与父对齐,右边缘与图像对齐。图像在右侧对齐,仅占用所需的空间

<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/layout1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal">
  <Button
      android:background="@null"
      android:text="The Button Text"
      android:id="@+id/btnText"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_toLeftOf="@+id/imgSettings"
      android:layout_alignParentLeft="true"
      android:gravity="left"
      />
  <ImageButton
      android:id="@id/imgSettings"
      android:background="@null"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:src="@drawable/settings_light"
      android:layout_centerVertical="true"
      android:layout_alignParentRight="true" />
</RelativeLayout>
于 2013-07-01T16:32:42.000 回答
0

你应该包括android:layout_weight属性。使用此属性,同一布局中的元素按百分比共享空间。

所以把<Button>and<ImageButton>放在同一个<LinearLayout>地方,这样他们就可以共享空间百分比。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  android:gravity="center_vertical">
  <LinearLayout
      android:id="@+id/layout1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:orientation="horizontal">
      <Button
          android:background="@null"
          android:text="The Button Text"
          android:id="@+id/btnText"
          android:layout_weight:".80"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent" />
      <ImageButton
          android:id="@+id/imgSettings"
          android:layout_toRightOf="@id/layout1"
          android:background="@null"
          android:layout_weight:".20"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentRight="true"
          android:src="@drawable/settings_light"
          android:layout_centerVertical="true" />
  </LinearLayout>
</RelativeLayout>
于 2013-07-01T16:42:07.360 回答