【问题标题】:AutoCompleteTextView float hintAutoCompleteTextView 浮动提示
【发布时间】:2015-08-13 12:57:24
【问题描述】:

我尝试了很多,但无法使用支持人员提供的 TextInputLayout 使工作成为 AutoCompleteTextView 浮动提示。

有可能还是我需要使用外部库?

【问题讨论】:

  • 您绝对可以使用设计库来做到这一点。发布您的代码,以便我可以更好地帮助您。
  • 请解释“无法工作”的含义。换句话说,您需要向我们提供您的问题的minimal, complete, and verifiable example

标签: android material-design android-support-library autocompletetextview android-textinputlayout


【解决方案1】:

没有。

设计库本身就够了

像这样包含

<android.support.design.widget.TextInputLayout
    android:id="@+id/til_id"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="125dp"
    >

    <AutoCompleteTextView
        android:id="@+id/auto_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Id"
        android:singleLine="true"/>
</android.support.design.widget.TextInputLayout>

【讨论】:

  • 谢谢,我有一个无法正常工作的特定布局,我正试图找出我的错误。
  • 你想在那个链接上显示什么?完全没用。你真的可以将它指向代码中的特定类或行吗?
  • @delkant 有答案代码,但随着时间的推移,repo 会更新。谢谢指点
  • 感谢您的澄清!
  • 2020,这仍然有效。虽然我想指出会有一个小的设计问题,因为TextInputEditText 添加了一个填充,而AutoCompleteTextView 没有。所以,添加一个填充android:padding="16dp"AutoCompleteTextView 将使它看起来和以前完全一样
【解决方案2】:

可能有点晚了,但诀窍是:

创建以下类,

public class AutoCompleteTextInputLayout extends TextInputLayout {

    private boolean mIsHintSet;
    private CharSequence mHint;

    public AutoCompleteTextInputLayout(Context context) {
        super(context);
    }

    public AutoCompleteTextInputLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void addView(View child, int index, ViewGroup.LayoutParams params) {
        if (child instanceof EditText) {
            mHint = ((EditText) child).getHint();
        }
        super.addView(child, index, params);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        if (!mIsHintSet && ViewCompat.isLaidOut(this)) {
            setHint(null);

            EditText editText = getEditText();
            if (editText == null) {
                return;
            }
            CharSequence currentEditTextHint = editText.getHint();
            if (!TextUtils.isEmpty(currentEditTextHint)) {
                mHint = currentEditTextHint;
                editText.setHint("");
            }
            setHint(mHint);
            mIsHintSet = true;
        }
    }
}

现在将这些行添加到您的布局文件中,看看它的神奇之处

<com.example.AutoCompleteTextInputLayout
    android:id="@+id/text_input_autocomplete"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <AutoCompleteTextView
        android:id="@+id/autocomplete_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:textColorHint="@color/textColorDarkHint"/>
</com.example.AutoCompleteTextInputLayout>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多