当我在应用程序中使用textInputLayout withOut AppCompat主题时,我无法使布局膨胀并且我的应用程序崩溃了。当我尝试单独为TextInputLayout设置Appcompat主题时,它适用于API大于21的设备,但它对于棒棒糖前设备仍然崩溃。有没有办法在PreLollipop设备上使用TextInputLayout而不使用AppCompat主题用于整个应用程序?
答案 0 :(得分:1)
TextInputLayout需要从Design主题派生的主题。首先,您需要获得具有此类主题的上下文。
val themedContext = ContextThemeWrapper(context, R.style.Theme_Design_Light)
此处context
是一项活动。现在您有两个选择:
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
是一个视图组,输入布局将在通胀后附加。
val inputLayout = TextInputLayout(themedContext)
val editText = EditText(inputLayout.context)
inputLayout.addView(editText)
inputParent.addView(inputLayout)
我推荐选项1,因为这是大多数人在定义视图层次结构时习惯的。它可以帮助您避免意外结果。
或者只是使用AppCompat主题和AppCompatActivity,因为为什么不是。