【问题标题】:I am trying to make AutoCompleteTextView look like a material Edittext我试图让 AutoCompleteTextView 看起来像一个材料 Edittext
【发布时间】:2019-12-30 10:31:24
【问题描述】:

我试图让AutoCompleteTextView 看起来像这张图片https://ibb.co/ZJxmgK5 但无法做到这一点。结果中看不到轮廓框

以下是我当前的代码。之前我尝试在TextInputLayout 中添加EditText,但现在我想在其中添加自动完成功能。

<com.google.android.material.textfield.TextInputLayout
                    android:id="@+id/input_layout_holiday_destination"
                    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/lbl_destination_big">
<AutoCompleteTextView
                        android:id="@+id/edittext_holiday_destination"
                        style="@style/Base.Widget.AppCompat.EditText"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_weight="10"
                        android:background="@android:color/transparent"
                        android:hint="@string/lbl_destination"
                        android:layout_marginLeft="@dimen/margin8"
                        android:singleLine="true"
                        android:lines="1"
                        android:textSize="25sp"
                        android:nextFocusDown="@+id/txv_holiday_num_of_nights"
                        android:imeOptions="actionNext"
                        android:textCursorDrawable="@drawable/edittext_cursor_drawable"/>
                    />
</com.google.android.material.textfield.TextInputLayout>

预期的结果是上面已给出 URL 的图像。

【问题讨论】:

  • 您的期望是什么?你在看什么?
  • 已经添加到代码中。没用

标签: android material-design autocompletetextview android-textinputlayout material-components-android


【解决方案1】:

如果您想将TextInputLayoutAutoCompleteTextView 结合使用,您应该为TextInputLayout 使用这种样式Widget.MaterialComponents.TextInputLayout.*.ExposedDropdownMenu

在你的情况下:

style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"

使用类似的东西:

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/name_text_input"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="HINT TEXT">

        <AutoCompleteTextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@null"/>

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

还要检查doc

注意:当使用带有不是TextInputEditTextEditText 子级的轮廓文本字段时,请确保将EditText 的android:background 设置为@null。这允许TextInputLayoutEditText 上设置轮廓背景。

如果您想避免下拉图标,只需使用app:endIconMode 属性。

<com.google.android.material.textfield.TextInputLayout
      app:endIconMode="none"
      ...>

【讨论】:

  • 谢谢。我不是在寻找下拉图标。无论如何,我解决了它。将发布答案
  • @GaganBatra 在这种情况下,只需在您的 InputTextLayout 中添加 app:endIconMode="none"
【解决方案2】:

下面的代码解决了这个问题:

<com.google.android.material.textfield.TextInputLayout
                    android:id="@+id/input_layout_holiday_destination"
                    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/lbl_destination_big">

                    <androidx.appcompat.widget.AppCompatAutoCompleteTextView
                        android:id="@+id/edittext_holiday_destination"
                        style="@style/Widget.MaterialComponents.AutoCompleteTextView.OutlinedBox"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:singleLine="true"
                        android:lines="1"
                        android:nextFocusDown="@+id/txv_holiday_num_of_nights"
                        android:imeOptions="actionNext"
                        android:textCursorDrawable="@drawable/edittext_cursor_drawable"
                        />

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

【讨论】:

【解决方案3】:
    <com.google.android.material.textfield.TextInputLayout
    android:id="@+id/input_layout_holiday_destination"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <AutoCompleteTextView
        android:id="@+id/edittext_holiday_destination"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Destination"
        android:layout_weight="10"
        android:singleLine="true"
        android:lines="1"
        android:textSize="25sp"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="8dp"
        tools:text="Hello" />
    />
</com.google.android.material.textfield.TextInputLayout>

这行得通。问题在于您设置为 AutoCompleteTextView 的背景颜色。

【讨论】:

  • 这仍然没有显示轮廓框。无论如何,我解决了它。将发布答案。谢谢
  • +1 表示“问题在于您设置为 AutoCompleteTextView 的背景颜色”。
【解决方案4】:

大家好,在搜索了很多之后发现很少。我试图达到我想要的效果,我想和你分享经验和结果。 正如Material Design 文档所说的那样。

一个类似于 Spinner 的结果Image Dropdown Menu,遵循文档。下一个代码:

<com.google.android.material.textfield.TextInputLayout
                android:id="@+id/txtAnswer"
                style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/margin_top_15dp"
                android:layout_marginEnd="10dp"
                app:endIconDrawable="@drawable/ic_arrow_down"
                app:hintTextAppearance="@style/styleFilterLabelLatoRegular"
                app:layout_constraintEnd_toStartOf="@+id/txtAssignedTo"
                app:layout_constraintStart_toStartOf="@+id/guideLineBegin"
                app:layout_constraintTop_toBottomOf="@+id/txtSearchQuestionnaire">

                <AutoCompleteTextView
                    android:id="@+id/actvTypesAnswer"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="none"
                    android:hint="@string/text_answer" />

现在是来自 AutoCompleteTextView Image AutoCompleteTextView 的预期结果。代码xml。

<com.google.android.material.textfield.TextInputLayout
                android:id="@+id/txtSearchQuestionnaire"
                style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/margin_top_15dp"
                app:endIconMode="none"
                app:hintTextAppearance="@style/styleFilterLabelLatoRegular"
                app:layout_constraintEnd_toEndOf="@id/guideLineEnd"
                app:layout_constraintStart_toStartOf="@+id/guideLineBegin"
                app:layout_constraintTop_toBottomOf="@+id/txtPeriodActivation">

                <AutoCompleteTextView
                    android:id="@+id/actvNameQuestionnaire"
                    style="@style/textAppearanceSettingInputEdittextFilter.Enabled"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:drawableEnd="@drawable/ic_search"
                    android:hint="@string/text_search_name_questionnaire" />

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

唯一的变化是在 TextInputLayout 和 AutoCompleteTextView 中添加属性 app: endIconMode = "none" 属性 android: drawableEnd = "@drawable / ic_search"

请原谅我的英语水平!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 2018-03-10
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    相关资源
    最近更新 更多