1

我的复选框似乎与我的布局有点搞砸了。

这就是我要的:

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>

更新的代码,它仍然将文本推到右边。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>

登录按钮、复选框和“保持登录”文本视图的结果

结果

4

4 回答 4

0

您在这里有一些选择:

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

  2. 对于所有三个视图都使用这个:android:layout_weight="1". 然后每个视图将有相同的房间。codeMagic 怎么说,对于 LinearLayout 的水平/垂直方向,您应该将高度/宽度设置为 0dp,以防止视图被绘制两次。

于 2013-08-09T22:45:31.720 回答
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>

于 2013-08-10T08:30:24.157 回答
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" />
于 2013-08-09T22:54:58.777 回答
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>
于 2013-08-10T08:34:23.277 回答