Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何设置自定义TextInputLayout的默认样式_Android_Kotlin_Android Theme_Material Components Android_Android Textinputlayout - Fatal编程技术网

Android 如何设置自定义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

我想用默认样式创建自定义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) 
    }

}

下拉菜单

我不希望默认情况下将此样式应用于所有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>