在 LinearLayout 中将复选框对齐到右侧 android

Align checkbox to the right side in LinearLayout android

我正在尝试在 LinearLayout 中制作一些带有复选框的文本视图。我想要这样的结果:

TextView           Ckeckbox
TextViewwwwww      Ckeckbox
TextV              Ckeckbox

但目前我有这个:

TextView  Checkbox
TextViewwwww  Checkbox
TextView  Checkbox

这是我的 xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentTop="true"
    android:orientation="horizontal">

  <TextView
    android:id="@+id/itemTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
 <CheckBox
        android:id="@+id/checkItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />
</LinearLayout>

这个 xml 给了我同样的结果:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentTop="true"
    android:orientation="horizontal">

  <TextView
    android:id="@+id/itemTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="start"/>
 <CheckBox
        android:id="@+id/checkItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="end"/>
</LinearLayout>

如果您使用 vertical 布局,请使用 layout_gravity="right" 而不是 gravity="end"

您的 CheckBox 标签应如下所示:

<CheckBox
    android:id="@+id/checkItem"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"/>

编辑:horizontal 布局上,尝试 layout_weight="1",这将使您的两个元素填充布局的一半 space。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:orientation="horizontal">

  <TextView
    android:id="@+id/itemTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"/>
 <CheckBox
        android:id="@+id/checkItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
</LinearLayout>

试试这个:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.ipdemo.MainActivity" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/itemTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="TextView" />

    <CheckBox
        android:id="@+id/checkItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="TextView" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
</LinearLayout>

 </LinearLayout>

使用布局权重并试试这个:

<?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="fill_parent"
          android:layout_alignParentTop="true"
          android:orientation="horizontal"
          android:weightSum="5">

    <TextView
      android:id="@+id/itemTitle"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="wdjhwdjwo"/>

    <CheckBox
      android:id="@+id/checkItem"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="4"/>
</LinearLayout>

您应该使用 layout_weight 属性来实现效果

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">

    <TextView
    android:id="@+id/itemTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:layout_weight="1" />

    <CheckBox
    android:id="@+id/checkItem"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1" />
</LinearLayout>

因此两个视图在水平方向上将占据屏幕尺寸的一半。您可以调整layout_weight以获得所需的结果。

也许还有其他方法可以做到这一点,但我认为这种方法是最好的方法。

检查以下在两个视图中使用 android:layout_weight="1"

<?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="fill_parent"
    android:layout_alignParentTop="true"
    android:orientation="horizontal">

  <TextView
    android:id="@+id/itemTitle"
    android:layout_width="fill_parent"

    android:layout_weight="1"
    android:layout_height="wrap_content"
    />
 <CheckBox
        android:id="@+id/checkItem"
        android:layout_width="fill_parent"

          android:layout_weight="1"
        android:layout_height="wrap_content"
        />
</LinearLayout>

您可以在 TextView 上使用 layout_weight 属性来自动指定 TextView 填充任何 CheckBox 不占用的 space .例如,以下内容会将您的复选框设置到末尾(前提是它们没有关联的文本),然后让 TextView 填充布局的其余部分。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/itemTitle"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
    <CheckBox
        android:id="@+id/checkItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

此外,您应该使用 match_parent 而不是 fill_parent,因为 fill_parent 已被弃用。