Android - TextInputLayout不包含TextInputEditText的提示

时间:2017-10-04 05:28:35

标签: android android-textinputlayout

我在TextInputEditText嵌套了一个简单的TextTnputLayout

我正在努力使TIL的长度与TIET中给出的提示一样长。

<android.support.design.widget.TextInputLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <android.support.design.widget.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:hint="This is a hint"/>

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

但问题是,它没有显示任何内容 Nothing

我必须将TIL的宽度设置为match_parent,或者只设置wrap_content以外的任何其他宽度。但是我希望宽度是动态的,TIL的宽度遵循提供的提示的长度。可能吗?如果是的话,怎么做?

我正在使用支持库版本26.0.2 btw。

Yvette Colomb的答案很接近,TIL包裹TIET,但花哨的动画在那里不起作用。可能是因为如果在执行中设置了提示,动画将无法启动?

6 个答案:

答案 0 :(得分:5)

您可以通过在java代码中设置提示来完成此操作。

从xml中删除提示:

<android.support.design.widget.TextInputLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/inputTxt"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

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

声明并初始化活动中的TextInputEditText并设置提示。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final TextInputEditText inputTxt = (TextInputEditText) findViewById(R.id.inputTxt);
    inputTxt.setHint("This is a hint");
}

enter image description here

这会在您输入时将文本换行到提示的宽度(不是说它是如何适用于所有设备)

enter image description here

然后在您输入文字时展开宽度。

enter image description here

回答您的最新问题。

当我们输入输入时,如何使输入布局增长。

<android.support.design.widget.TextInputLayout
    android:id="@+id/txtInputL"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/inputTxt"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:maxLines="1"/>

Java。

final TextInputEditText inputTxt = (TextInputEditText) findViewById(R.id.inputTxt);
inputTxt.setHint("This is a hint");
final TextInputLayout txtInputL = (TextInputLayout) findViewById(R.id.txtInputL);
txtInputL.setMinimumWidth(300);
txtInputL.setHint("This is a hint");

我添加了一个浮动提示:

enter image description here

我们正在打字:

enter image description here

如果您对此有任何其他疑问,请提出新问题。

答案 1 :(得分:0)

尝试这样做。

 <android.support.design.widget.TextInputEditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="This is a hint"/>

答案 2 :(得分:0)

  

试试这个:

select count(*)  as Existed
from
  subject_table
where
  subject_id IN ('abc123', 'bcd3432', 'bla232'....)

答案 3 :(得分:0)

您可以改为通过xml来实现,只需设置TextInputLayout和TextInputEdittext的提示,然后它将起作用,然后使TextInputEdittext在您键入时增长,因此必须将其设置为maxlines =“ 1”,而layout_height设置为wrap_content如下

 <android.support.design.widget.TextInputLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="This is edittext">

            <android.support.design.widget.TextInputEditText
                android:hint="This is edittext
                android:maxLines="1"
                android:inputType="numberDecimal"
                android:layout_width="wrap_content"
                android:layout_height="match_parent" />

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

I hope this help someone

答案 4 :(得分:0)

我找到了一种解决方法,对我来说,我想在禁用的Material Design样式的EditText中显示“国家/地区代码”,但与您相同,我无法在TextInputLayout中使用wrap_context。

因此,作为一种解决方法,我在TextInputLayout和TextInputEditText中都添加了提示文本,并且由于我在TextInputEditText中具有预定义的文本,因此TextInputEditText的提示从未出现在屏幕上,而是为TextInputLayout的提示留出了空间。

这就是我所做的...

<androidx.constraintlayout.widget.ConstraintLayout 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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:padding="16dp">
    ...
    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/country_code"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="Country code"
        app:hintTextColor="#737373"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="+91"
            android:hint="Country Code"
            android:enabled="false"
            android:textColor="#737373"
            .../>

    </com.google.android.material.textfield.TextInputLayout>
    ...
</androidx.constraintlayout.widget.ConstraintLayout>

P.S。您可能想要在TextInputEditText提示中添加更多字符,因为这是控制间距的原因。另外,约束布局的存在仅仅是因为我在活动中还有其他元素,您可以避免使用它,并使用任何根视图。

屏幕截图

enter image description here

答案 5 :(得分:0)

像这样设置您的xml:

Background

现在,根据提示的大小,将input_text_field的大小调整为<​​strong> ,如下所示:

<com.google.android.material.textfield.TextInputLayout
     android:id="@+id/text_field_layout"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:textSize="15sp">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/input_text_field"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        />

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