首页 > 解决方案 > 使用 android:inputType textMultiLine 后无法选择项目

问题描述

我试图将 Picker 默认设置更改为 android ,所以我正在更改 android 默认设置(因为它不能用 css 完成)。

我的问题是:选择器没有显示大字符串。所以我在我的 styles.xml 中进行了这些更改:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="android:windowBackground">@drawable/screen</item>
    <item name="android:spinnerItemStyle">@style/SpinnerItem</item>
    <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item>
    
</style>

<style name="SpinnerItem" parent="Theme.AppCompat.Light.NoActionBar">>
    
</style>

<style name="SpinnerDropDownItem" parent="Theme.AppCompat.Light.NoActionBar">>
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>   
    <item name="android:inputType">textMultiLine</item>
    <item name="android:maxLines">3</item>

</style>

完成此操作后,选择器现在换行。但它不再可选择。我尝试使用 android:clickable true,但没有奏效。

我能做些什么来修复它?

标签: androidreact-nativeandroid-layoutreact-native-androidandroid-widget

解决方案


覆盖getDropDownView()方法ArrayAdapter并放入setSingleLine(false)视图的post方法。因此,当视图完全创建时,它将文本包装到适当的行。

@Override
public View getDropDownView(final int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = new TextView(_context);
    }

    TextView item = (TextView) convertView;
    item.setText("asddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");
    final TextView finalItem = item;
    item.post(new Runnable() {
        @Override
        public void run() {
            finalItem.setSingleLine(false);
        }
    });
    return item;
}

推荐阅读