Android 如何设置自定义TextInputLayout的默认样式
我想用默认样式创建自定义TextInputLayout。但是这种风格没有被应用Android 如何设置自定义TextInputLayout的默认样式,android,kotlin,android-theme,material-components-android,android-textinputlayout,Android,Kotlin,Android Theme,Material Components Android,Android Textinputlayout,我想用默认样式创建自定义TextInputLayout。但是这种风格没有被应用 class AutoCompleteTextInputLayout @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = R.style.AppTheme_TextInputLayout_DropdownMenu ): TextInputLayout(conte
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)
}
}
下拉菜单
我不希望默认情况下将此样式应用于所有TextInputLayout,因为我已经有了如下样式:
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
<item name="textInputStyle">@style/AppTheme.TextInputLayout</item>>
</style>
@样式/AppTheme.TextInputLayout>
提前感谢您的帮助您不能将构造函数与
R.style.AppTheme\u TextInputLayout\u下拉菜单一起使用
,因为TextInputLayout
的3rd参数不是样式而是属性主题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>
谢谢你的帮助。但如果我在自定义主题中设置了此样式,它将默认应用于所有InputLayout,并且我已经有了另一个样式。@Louis它不是您的AppTheme。它只是一个主题,仅应用于带有
上下文主题包装器的自动完成布局
。。。真奇怪。你知道为什么吗?@Louis我已经试过答案中的密码了,效果很好。不知道你的臭虫在哪里。您使用的是哪个版本的kotlin?
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>
<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>