Android:对齐复选框

时间:2014-04-24 16:04:45

标签: android android-layout

目标:将我的Checkbox视图与我的LinearLayout左侧对齐( id = linearlayout < / em>)!

实际外观:

enter image description here

item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:layout_gravity="center_vertical"
    android:weightSum="14">
<LinearLayout
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:layout_weight="13"
    >
    <TextView
        android:id="@+id/tv_ville_secteur"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"       
        android:gravity="center_vertical"
        android:paddingTop="4dp"
        android:text="TextView"
        android:textColor="@android:color/holo_blue_dark"
        android:textSize="26dp" />
    </LinearLayout>   
<LinearLayout
    android:id="@+id/linearlayout"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:layout_gravity="left"
    android:gravity="left"
    >
    <CheckBox
        android:id="@+id/cb_ville_secteur"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="26dp"
        android:layout_gravity="left"
        android:gravity="left"            
        android:layout_marginRight="2dp"                    
        android:text="text" />        
    </LinearLayout>
</LinearLayout>

4 个答案:

答案 0 :(得分:1)

将您的复选框移动到TextView的相同LinearLayout中,以便它显示在TextView的下一个。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="horizontal"
              android:layout_gravity="center_vertical"
              android:weightSum="14">

        <TextView
                android:id="@+id/tv_ville_secteur"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:gravity="center_vertical"
                android:paddingTop="4dp"
                android:text="TextView"
                android:textColor="@android:color/holo_blue_dark"
                android:textSize="26dp" />

        <CheckBox
                android:id="@+id/cb_ville_secteur"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="26dp"
                android:layout_marginRight="2dp"
                android:text="text" />

</LinearLayout>

我删除了所有无用的LinearLayout包裹,你真的需要它们吗?


如果出于某种奇怪的原因,答案是:是的。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="horizontal"
              android:layout_gravity="center_vertical"
              android:weightSum="14">
    <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="13"
            >
        <TextView
                android:id="@+id/tv_ville_secteur"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:gravity="center_vertical"
                android:paddingTop="4dp"
                android:text="TextView"
                android:textColor="@android:color/holo_blue_dark"
                android:textSize="26dp" />

        <CheckBox
                android:id="@+id/cb_ville_secteur"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="26dp"
                android:layout_gravity="left"
                android:gravity="left"
                android:layout_marginRight="2dp"
                android:text="text" />
    </LinearLayout>
</LinearLayout>

答案 1 :(得分:1)

尝试使用复选框

设置布局的修复大小

答案 2 :(得分:1)

我相信这就是你要找的东西。您需要确定100dp是否足够宽或太宽以至于您的复选框(它是否只能是1位,2位,5位?)。我还将边距/填充和重力移动到更明显的元素。使用权重时,请始终牢记将相应的宽度或高度设置为0dp,在计算布局时,wrap_content将与权重竞争,我相信这是您的复选框没有排队的主要原因。

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:paddingLeft="8dp"
        android:paddingRight="2dp" >

        <TextView
            android:id="@+id/tv_ville_secteur"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:paddingTop="4dp"
            android:text="Agadir"
            android:textSize="26dp" />

        <CheckBox
            android:id="@+id/cb_ville_secteur"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="1"
            android:textSize="26dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:paddingLeft="8dp"
        android:paddingRight="2dp" >

        <TextView
            android:id="@+id/tv_ville_secteur"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:paddingTop="4dp"
            android:text="Casablanca"
            android:textSize="26dp" />

        <CheckBox
            android:id="@+id/cb_ville_secteur"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="2"
            android:textSize="26dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:paddingLeft="8dp"
        android:paddingRight="2dp" >

        <TextView
            android:id="@+id/tv_ville_secteur"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:paddingTop="4dp"
            android:text="El Jadida"
            android:textSize="26dp" />

        <CheckBox
            android:id="@+id/cb_ville_secteur"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="3"
            android:textSize="26dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:paddingLeft="8dp"
        android:paddingRight="2dp" >

        <TextView
            android:id="@+id/tv_ville_secteur"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:paddingTop="4dp"
            android:text="Lots of text in this one to stretch the limits of the text view"
            android:textSize="26dp" />

        <CheckBox
            android:id="@+id/cb_ville_secteur"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="999"
            android:textSize="26dp" />
    </LinearLayout>

</LinearLayout>

显然你只需要从上面的代码中拉出一行,我添加了多行来显示/测试对齐。

答案 3 :(得分:0)

如果您想要CheckBox左侧的TextView,则应该这样做(只需交换两个LinearLayouts,因为您有水平方向父布局,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="horizontal"
  android:layout_gravity="center_vertical"
  android:weightSum="14">

<LinearLayout
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"
  android:layout_weight="1"
  android:layout_gravity="left"
  android:gravity="left"
>
<CheckBox
    android:id="@+id/cb_ville_secteur"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="26dp"
    android:layout_gravity="left"
    android:gravity="left"            
    android:layout_marginRight="2dp"                    
    android:text="text" />        
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
android:layout_weight="13"
>
<TextView
    android:id="@+id/tv_ville_secteur"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="8dp"       
    android:gravity="center_vertical"
    android:paddingTop="4dp"
    android:text="TextView"
    android:textSize="26dp" />
</LinearLayout>