带有inputType的TextView在按下时仍然会被触摸,尽管它已被禁用

时间:2017-02-06 09:40:46

标签: android android-layout

我尝试使用textView显示密码,我使用了inputType" textPassword"它显示的是我想要的点缀密码文本。这个textView是在相对布局中我尝试从相对布局中获取clicklistener但是当我按下textView时它没有点击,当我删除inputType时它工作正常。这是我到现在为止所尝试的。 `

<RelativeLayout
                android:id="@+id/relativeLayout_changePassword"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/colorWhite"
                android:clickable="true"
                android:descendantFocusability="blocksDescendants"
                android:foreground="?selectableItemBackground"
                android:padding="20dp">

                <TextView
                    android:id="@+id/settings_password_title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_centerVertical="true"
                    android:text="@string/settings_change_password"
                    android:textColor="@color/text_color" />

                <TextView
                    android:id="@+id/textView_settings_password"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_toRightOf="@+id/settings_password_title"
                    android:clickable="false"
                    android:enabled="false"
                    android:focusable="false"
                    android:focusableInTouchMode="false"
                    android:gravity="right"
                    android:inputType="textPassword"
                    android:text="123abc[enter image description here][1]"
                    android:textColor="@color/colorPrimary" />

        </RelativeLayout>`

3 个答案:

答案 0 :(得分:1)

您是否尝试过使用java代码而不是xml设置输入类型?这有什么区别吗?

答案 1 :(得分:0)

您已使用

android:clickable="false" android:enabled="false" android:focusable="false"

适用于您的TextView,因此只有当您点击此TextView外部时,它才会收到任何点击事件,您的布局会收到输入点击次数

同样inputType"textPassword"View的点击事件没有影响。

答案 2 :(得分:0)

您可以以编程方式设置输入类型而不是xml文件

 <TextView
    android:id="@+id/textView_settings_password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_toRightOf="@+id/settings_password_title"
    android:clickable="false"
    android:enabled="false"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:gravity="right"
    android:text="123abc[enter image description here][1]"
    android:textColor="@color/colorPrimary" /> 

然后在活动中设置输入类型

 TextViewPassword.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD );
 tv.setTransformationMethod(PasswordTransformationMethod.getInstance());