首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义TextInputLayout

自定义TextInputLayout
EN

Stack Overflow用户
提问于 2020-06-19 04:20:24
回答 1查看 828关注 0票数 3

我希望让我的CustomTextInputLayoutWidget.MaterialComponents.TextInputLayout.OutlinedBox作为默认样式,而不需要在XML中任何地方定义它。

我试过这个

代码语言:javascript
复制
class CustomTextInputLayout @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : TextInputLayout(ContextThemeWrapper(context, R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox), attrs, defStyleAttr) {

}

还有这个

代码语言:javascript
复制
class CustomTextInputLayout @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : TextInputLayout(context, attrs, R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox)

但这不管用。我尝试过默认的XML方式

代码语言:javascript
复制
<com.custom.CustomTextInputLayout
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
    ...>
    <com.google.android.material.textfield.TextInputEditText
        ...
        android:hint="Sample Hint" />
</com.custom.CustomTextInputLayout>

而且起作用了。

我在这里遗漏了什么?XML

  • 如何为自定义TextInputLayout设置默认样式而不使用
EN

回答 1

Stack Overflow用户

发布于 2020-06-19 10:42:37

这并不是你想要的。你可以定义:

代码语言:javascript
复制
public class CustomTextInputLayout @JvmOverloads constructor(
        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = R.attr.textInputStyle
) : TextInputLayout(ContextThemeWrapper(context, R.style.Outlined_Theme), attrs, defStyleAttr) { ...  }

通过以下方式:

代码语言:javascript
复制
<style name="Outlined.Theme" parent="">
      <item name="textInputStyle">@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox</item>
</style>

然后在布局中使用juse:

代码语言:javascript
复制
 <com.example.quicksample.CustomTextInputLayout
       ....
       android:hint="Sample">

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

 </com.example.quicksample.CustomTextInputLayout>

您的代码不能工作,因为ContextThemeWrapper(context, R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox)第二个参数必须是属性主题,而不是样式(对于TextInputLayout(context, attrs, R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox)是一样的)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62463203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档