使用TextInputLayout布局而不更改应用程序主题

时间:2017-08-02 11:46:40

标签: android android-textinputlayout

当我在应用程序中使用textInputLayout withOut AppCompat主题时,我无法使布局膨胀并且我的应用程序崩溃了。当我尝试单独为TextInputLayout设置Appcompat主题时,它适用于API大于21的设备,但它对于棒棒糖前设备仍然崩溃。有没有办法在PreLollipop设备上使用TextInputLayout而不使用AppCompat主题用于整个应用程序?

1 个答案:

答案 0 :(得分:1)

TextInputLayout需要从Design主题派生的主题。首先,您需要获得具有此类主题的上下文。

val themedContext = ContextThemeWrapper(context, R.style.Theme_Design_Light)

此处context是一项活动。现在您有两个选择:

1)从XML

扩充输入布局
val inflater = LayoutInflater.from(themedContext)
inflater.inflate(R.layout.my_input_layout, inputParent, true)
// Find the input layout and edit text by ID and work with them.

inputParent是一个视图组,输入布局将在通胀后附加。

2)在Java

中创建输入布局
val inputLayout = TextInputLayout(themedContext)
val editText = EditText(inputLayout.context)
inputLayout.addView(editText)
inputParent.addView(inputLayout)

我推荐选项1,因为这是大多数人在定义视图层次结构时习惯的。它可以帮助您避免意外结果。

或者只是使用AppCompat主题和AppCompatActivity,因为为什么不是。