在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>

您可以在TextView上使用layout_weight属性,仅用于自动指定TextView来填充CheckBox未占用的任何空间。例如,下面的代码将把复选框设置到最后(前提是它们没有与之关联的文本),然后让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已被弃用。

试试这个:

<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以获得期望的结果。

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

如果使用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"/>

EDIT:对于horizontal布局,尝试layout_weight="1",这将使您的两个元素填充一半的布局空间。

<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>

检查以下使用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>

最新更新