gpt4 book ai didi

android - 如何为自定义 TextInputLayout 设置默认样式

转载 作者:行者123 更新时间:2023-12-02 12:25:39 25 4
gpt4 key购买 nike

我想创建一个具有默认样式的自定义 TextInputLayout。但未应用样式。

class AutoCompleteTextInputLayout @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = R.style.AppTheme_TextInputLayout_DropdownMenu
): TextInputLayout(context, attrs) {

init {
context.inflater.inflate(R.layout.auto_complete_text_input_layout, this,true)
}

}
<style name="AppTheme.TextInputLayout.DropdownMenu" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu">
<item name="endIconMode">dropdown_menu</item>
</style>

<merge xmlns:android="http://schemas.android.com/apk/res/android">
<AutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</merge>

我不希望默认情况下为所有 TextInputLayout 应用此样式,因为我已经有如下样式:

    <style name="AppTheme" parent="Theme.MaterialComponents.Light">
<item name="textInputStyle">@style/AppTheme.TextInputLayout</item>>
</style>

预先感谢您的帮助

最佳答案

您不能将构造函数与 R.style.AppTheme_TextInputLayout_DropdownMenu 一起使用,因为 TextInputLayout3rd 参数 不是样式,但属性主题为 R.attr.textInputStyle

你可以使用类似的东西:

public class AutoCompleteTextInputLayout @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = R.attr.textInputStyle
) : TextInputLayout(ContextThemeWrapper(context, R.style.Custom_Theme),
attrs, defStyleAttr) { ... }

自定义主题:

<style name="Custom.Theme" parent="">
<item name="textInputStyle">@style/AppTheme.TextInputLayout.DropdownMenu</item>
</style>

通过这种方式,您将创建一个具有指定主题 (Custom.Theme) 的新上下文包装器。此主题仅由自定义小部件 AutoCompleteTextInputLayout 使用。
这意味着其他 TextInputLayout 继续使用默认样式(由 AppTheme 中的属性 textInputStyle 定义)。

例子:

<AutoCompleteTextInputLayout>

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

</AutoCompleteTextInputLayout>

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

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

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

enter image description here

关于android - 如何为自定义 TextInputLayout 设置默认样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64378135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com