【问题标题】:Check Box Text alignment with button tint复选框文本与按钮色调对齐
【发布时间】:2016-12-01 08:25:49
【问题描述】:

我遇到了一个问题,也许我可能遇到了设备问题。

单一线性布局

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

我面临的问题:一旦我选中复选框,按钮就会可见并且复选框会移动到下方,因为我提供了顶部边距,我的视图是这样的:

编辑文本 按钮(可见性消失) 复选框(顶部有边距)

只要我检查复选框,我就会使按钮可见,但我面临两个问题。

问题 1: 选中复选框时,文本会向上移动一点,但按钮颜色不会移动它确实保持固定

问题 2: 由于我在检查整个复选框时已给出顶部边距并且按钮当前不可见,因此现在正在从按钮中获取边距,该按钮之前是从编辑文本中获取的,并且仍然再次观察到 问题 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>

仅查看布局 SMS,因为我使用了查看寻呼机,不查看 Otp 部分。 我正在考虑增加复选框的文本大小。

这里有两张截图,抱歉耽搁了。 Before

After

【问题讨论】:

    标签: android


    【解决方案1】:

    当按钮为visibility.GONE时,表示它不占用屏幕空间, 当你让他visibility.VISIBLE 它现在占据一个位置,如果设置不正确,其他视图会对它做出反应, 最好的解决方案是使用visibilty.INVISIBLE,这将使其不可见,但会在屏幕中占据一席之地, 这样,当它变得可见时,什么都不会移动, 然后你可以轻松地重新排列屏幕

    您可以查看更多信息 Android : difference between invisible and gone?

    【讨论】:

    • 完美,但问题 1 仍未解决,请帮助。为什么当我选中复选框按钮时此文本向上移动
    • 可以放两张check前后的截图吗?
    • 虽然我必须在模拟器上测试它,这是上传迟到的原因抱歉,因为我的模拟器超级慢。
    • 工作感谢您的部分回答。你知道早先我试图在父底部按钮设置这个元素我愚蠢地在检查方法 Box.setGravity(0);这就是为什么它像鸟一样飞翔:P
    • 如果您尝试回答,至少请礼貌地喜欢这个问题
    【解决方案2】:

    选中复选框后立即尝试invalidate() 布局。

    【讨论】:

    • invalidate() 与布局无关,它强制重绘。
    猜你喜欢
    • 2012-10-30
    • 2017-01-15
    • 2019-08-06
    • 1970-01-01
    • 2017-01-28
    • 2016-06-04
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多