Android 复选框文本与按钮色调对齐

Android 复选框文本与按钮色调对齐,android,Android,我面临一个问题,可能是设备问题 单线布局 我在做什么:创建带有三个视图的登录表单,即编辑文本、按钮(最初可见性消失)、复选框 我面对的是什么:只要我选中复选框,按钮就会显示,复选框就会在下方移动,因为我提供了页边空白顶部,我的视图如下所示: 编辑文本 按钮(可见性消失) 复选框(带页边空白顶部) 一旦我选中复选框,我就会使按钮可见,但我面临两个问题 第1期: 复选框选中此复选框时,文本会稍微向上移动,但按钮“淡色”不会移动,它会保持不变 第二期: 由于我已给出页边距顶部,并且在我选中整个复选框时

我面临一个问题,可能是设备问题

单线布局

我在做什么:创建带有三个视图的登录表单,即编辑文本、按钮(最初可见性消失)、复选框

我面对的是什么:只要我选中复选框,按钮就会显示,复选框就会在下方移动,因为我提供了页边空白顶部,我的视图如下所示:

编辑文本 按钮(可见性消失) 复选框(带页边空白顶部)

一旦我选中复选框,我就会使按钮可见,但我面临两个问题

第1期: 复选框选中此复选框时,文本会稍微向上移动,但按钮“淡色”不会移动,它会保持不变

第二期: 由于我已给出页边距顶部,并且在我选中整个复选框时,按钮当前不可见,因此视图现在从按钮中获取页边距,之前它从编辑文本中获取页边距,并且仍然第1期再次被观察到

我的xml代码如下:

<RelativeLayout 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:padding="0dip"
    tools:context=".LoginActivity">

    <com.medmainfomatix.VoIPvoiceapp.MyViewPager
        android:id="@+id/viewPagerVertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="150dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/layout_sms"
        android:gravity="center_horizontal"
        android:orientation="vertical">



        <android.support.design.widget.TextInputLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="50dp"
            android:layout_gravity="center"
            >

            <EditText
                android:id="@+id/loginNo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:minWidth="200dp"
                android:layout_gravity="center_horizontal"
                android:textSize="25sp"
                android:maxLength="10"
                android:textColor="@color/white"
                android:hint="@string/msg_enter_mobile"
                android:digits="1234567890"
                android:textCursorDrawable="@null"
                android:inputType="phone">

                <requestFocus />

            </EditText>

        </android.support.design.widget.TextInputLayout>

        <Button
            android:id="@+id/btn_request_sms"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="NEXT"
            android:minHeight="50dp"
            android:minWidth="170dp"
            android:background="@color/btnclr"
            android:textColor="@color/pink"
            android:textSize="20sp"
            android:textStyle="bold"
            android:visibility="gone" />

      <CheckBox
            android:id="@+id/checkBox1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_marginTop="200dp"
            android:layout_gravity="center_horizontal"
            android:textColor="@color/white"
            android:buttonTint="@color/white"/>


    </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/layout_otp"
            android:gravity="center_horizontal"
            android:orientation="vertical">


            <TextView
                android:id="@+id/otptext1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_marginBottom="15dp"
                android:paddingLeft="40dp"
                android:paddingRight="40dp"
                android:layout_gravity="center"
                android:text="@string/msg_manual_otp"
                android:textColor="@android:color/white"
                android:textSize="12dp"
                />

            <android.support.design.widget.TextInputLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="50dp"
                android:layout_gravity="center"
                >



            <EditText
                android:id="@+id/inputOtp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:minWidth="120dp"
                android:layout_gravity="center"
                android:textSize="25sp"
                android:maxLength="6"
                android:textColor="@color/white"
                android:hint="@string/lbl_enter_otp"
                android:digits="1234567890"
                android:textCursorDrawable="@null"
                android:inputType="number">

                <requestFocus />

            </EditText>

            </android.support.design.widget.TextInputLayout>

            <Button
                android:id="@+id/loginButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="15dp"
                android:text="VERIFY"
                android:background="@color/btnclr"
                android:minHeight="50dp"
                android:minWidth="170dp"
                android:textColor="@color/pink"
                android:textSize="20sp"
                android:textStyle="bold"
                />

        </LinearLayout>
    </com.medmainfomatix.VoIPvoiceapp.MyViewPager>

</RelativeLayout>


当按钮处于
可见性时。消失
意味着它不会占用屏幕空间, 当你让他
可见。可见时,它现在会占据一个位置,如果设置不正确,其他视图会对此作出反应,
最好的解决方案是使用Visibility.INVISIBLE
,这将使其不可见,但会在屏幕中占据一席之地, 这样,当它变为可见时,任何东西都不会移动, 然后你可以很容易地重新排列屏幕

你可以查看这个以了解更多信息

选中复选框后立即尝试使布局无效()

很好,但问题1仍未解决,请帮助。为什么当我选中复选框的按钮时,文本会向上移动?你能在检查之前和之后放两个屏幕截图吗?虽然我必须在emulator上测试它,但这是上传延迟的原因。抱歉,因为我的emulator非常慢。工作正常。谢谢你的部分回答。你知道之前我试着在父项底部按钮设置这个元素,我愚蠢地在复选框中设置了这个元素;这就是为什么它像鸟一样飞翔:至少要礼貌地喜欢这个问题如果你试图回答一个问题,尽管invalidate()与布局无关,它会迫使你重新绘制。