TextView和Button旁边的CheckBox间距

时间:2013-08-09 22:35:24

标签: android

我的复选框似乎与我的布局相当紧张。

这就是我想要的:

Button  | CheckBox  | TextView

但CheckBox正在推动我的textview方式

Button  | CheckBox  |                  TextView

我的xml布局:

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

           <Button
               android:id="@+id/signin_button"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:padding="5dp"
               android:layout_marginLeft="7dp"
               android:background="@layout/bordersignin"
               android:textColor="#ffffff"
               android:text="@string/signin" />

           <CheckBox
               android:id="@+id/staysignedin"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="@string/staysignedin" />

           <TextView
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_gravity="left|center"
               android:text="Stay signed in" />
       </LinearLayout>

Upadated代码,它仍然将文本推向右侧。 Wieghts对它们的水平运动没有影响。     

           <Button
               android:id="@+id/signin_button"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_marginLeft="10dp"
               android:background="@layout/bordersignin"
               android:padding="5dp"
               android:text="@string/signin"
               android:textColor="#ffffff"
               android:layout_weight="1" />

            <CheckBox
         android:id="@+id/staysignedin"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_weight=".1" 
         android:text="@string/staysignedin" />


     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_weight="10"
         android:text="Stay signed in" />

       </LinearLayout>

完整解决方案 -----------------------------------

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="1" >

        <Button
            android:id="@+id/signin_button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="40dp"
            android:layout_weight=".8"
            android:background="@layout/bordersignin"
            android:padding="5dp"
            android:text="@string/signin"
            android:textColor="#ffffff" />

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="25dp"
            android:layout_marginTop="40dp"
            android:layout_weight=".2" >

            <CheckBox
                android:id="@+id/staysignedinCheck"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="6dp"
                android:text="@string/staysignedin" />

            <TextView
                android:id="@+id/staysignedinText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignRight="@id/staysignedinCheck"
                android:layout_gravity="center"
                android:layout_marginTop="9dp"
                android:text="Stay signed in" />
        </RelativeLayout>
    </LinearLayout>

登录按钮的结果,复选框和“保持登录状态”textview

result

4 个答案:

答案 0 :(得分:0)

你有一些选择:

  1. 将LinearLayout的宽度更改为android:layout_width="wrap_content"。但这不会填满整个宽度。我不知道这是否是你想要的设置。

  2. 对于所有三个视图,请使用:android:layout_weight="1"。然后每个View都将拥有相同的房间。 CodeMagic如何表示,你应该为LinearLayout的水平/垂直方向设置高度/宽度为0dp,以防止视图被绘制两次。

答案 1 :(得分:0)

CheckBox对我来说似乎是无辜的。问题出在这里:

android:layout_gravity="left|center"

使用layout_gravity,您告诉父母如何将TextView置于其自身内部。

要在TextView中定位文本(示例):如果TextView填满整个屏幕宽度,并且需要将文本置于TextView中心,则可以使用android:gravity="center"。这会将文本置于 TextView中心。

要解决此问题,请将TextView的设置替换为:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Stay signed in" />

答案 2 :(得分:0)

这对你有帮助..

<?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="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/signin_button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="7dp"
        android:layout_weight="1"
        android:background="#ff0000"
        android:padding="5dp"
        android:text="Signing"
        android:textColor="#ffffff" />

    <CheckBox
        android:id="@+id/staysignedin"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:text="StaySignedin" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:text="Stay signed in" />
</LinearLayout>

答案 3 :(得分:0)

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

       <Button
           android:id="@+id/signin_button"
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:padding="5dp"
           android:layout_marginLeft="7dp"
           android:background="@layout/bordersignin"
           android:textColor="#ffffff"
           android:text="@string/signin" />

       <CheckBox
           android:id="@+id/staysignedin"
           android:layout_width="0dp"
           android:layout_weight="1"
           android:layout_height="wrap_content"
           android:text="@string/staysignedin" />

       <TextView
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="Stay signed in" />
   </LinearLayout>