Android:将TextInputLayout设为只读

时间:2019-11-23 10:35:07

标签: android android-styles android-textinputlayout material-components material-components-android

如何将TextInputLayout设置为只读?

我的代码如下所示:

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/TextInputLayout_fromAddAbsenceBottomSheet_AbsenceTaken"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="16dp"
        android:hint="Absence Taken"
        app:helperText="* Optional"
        app:layout_constraintEnd_toEndOf="@+id/TextInputLayout_fromAddAbsenceBottomSheet_AbsenceGiven"
        app:layout_constraintStart_toStartOf="@+id/TextInputLayout_fromAddAbsenceBottomSheet_AbsenceGiven"
        app:layout_constraintTop_toBottomOf="@+id/TextInputLayout_fromAddAbsenceBottomSheet_AbsenceGiven"
        style="@style/Widget.Unify.TextInputLayout">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/TextField_fromAddAbsenceBottomSheet_AbsenceTaken"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="numberDecimal"
            style="@style/Widget.Unify.EditText"/>

    </com.google.android.material.textfield.TextInputLayout>

我需要使TextInputLayout只读而不是EditText

我需要使其在TextInputLayout级别上只读,因为我需要对其应用样式。

我已经在android:enabled="false"中尝试过TextInputLayout,但仍然可以更改文本。

2 个答案:

答案 0 :(得分:0)

android:focusable="false" 
android:focusableInTouchMode="false"

在您的xml文件中,默认情况下将TextInputEditText的焦点设置为false

答案 1 :(得分:0)

问题不清楚。

要禁用 <com.google.android.material.textfield.TextInputLayout android:enabled="false" ..> ,只需使用:

1.1.0-beta02

它与版本1.1.0(当前为1.2.0-alpha02)和1.2.0(当前为app:boxStrokeColor)一起使用。
结果:启用/禁用:

enter image description here enter image description here

您可以使用 <com.google.android.material.textfield.TextInputLayout android:enabled="false" app:boxStrokeColor="@color/text_input_layout_stroke_color" ..> 和选择器来自定义框的颜色。
像这样:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="..." android:state_focused="true"/>
  <item android:alpha="0.87" android:color="..." android:state_hovered="true"/>
  <item android:alpha="0.12" android:color="..." android:state_enabled="false"/>
  <item android:color="..."/>
</selector>

选择器在哪里:

<item android:alpha="0.12" android:color="..." android:state_enabled="false"/>

在禁用状态下使用的颜色由android:textColor定义。

结果:使用不同的boxStrokeColor禁用。

enter image description here

如果要自定义EditText的颜色,可以使用 <com.google.android.material.textfield.TextInputEditText android:textColor="@color/..." 属性:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_enabled="false" android:color="@color/..."/>
  <item android:color="@color/...."/>
</selector>

结果:已禁用,并使用了不同的editext颜色。

enter image description here

在这种情况下,您还可以使用选择器:

import os
import math
import statistics
def main ():
    infile = open('USPopulation.txt', 'r')
    values = infile.read()
    infile.close()
    index = 0
    while index < len(values):
        values(index) = int(values(index))
        index += 1
    print(values)
main()

The text file contains 41 rows of numbers each entered on a single line like so:
151868
153982
156393
158956
161884
165069
168088
etc.