我尝试了很多方法,但是无法使用支持库中的TextInputLayout
来使AutoCompleteTextView
浮动提示正常工作。
这个问题是否有解决方法,或者需要使用外部库?
我尝试了很多方法,但是无法使用支持库中的TextInputLayout
来使AutoCompleteTextView
浮动提示正常工作。
这个问题是否有解决方法,或者需要使用外部库?
不需要。
像这样包含:
<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>
TextInputEditText
添加了一个AutoCompleteTextView
没有的填充。因此,在AutoCompleteTextView
中添加填充android:padding="16dp"
将使其看起来与以前完全相同。 - ansh sachdeva可能有点晚了,但这是诀窍:
创建以下类:
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>