0

我必須寫一個@BindingAdapter它接受微調和EnumSet<T>Android的數據綁定微調適配器

@BindingAdapter(value = {"android:entries"}) 
public static <T extends Enum<T> & ITextable> void bindSpinnerData(Spinner spinner, EnumSet<T> entries) { 
    spinner.setAdapter(new ArrayAdapter<T>(spinner.getContext(), R.layout.support_simple_spinner_dropdown_item, new ArrayList<>(entries)) { 
     @NonNull 
     @Override 
     public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 
      View v = super.getView(position, convertView, parent); 
      TextView textView = (TextView) v.findViewById(android.R.id.text1); 
      ITextable item = getItem(position); 
      textView.setText(item.getText()); 
      return v; 
     } 

     @Override 
     public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 
      View v = super.getDropDownView(position, convertView, parent); 
      TextView textView = (TextView) v.findViewById(android.R.id.text1); 
      ITextable item = getItem(position); 
      textView.setText(item.getText()); 
      return v; 
     } 
    }); 
} 

我有一個問題,因爲如果一個Spinner項目的文本是太長,無法成單行線,在文本不包裝,而切斷這樣的:

enter image description here

誰能告訴我在哪裏和什麼我應該改變包裝的文本?

回答

1

這實際上不是一個數據綁定問題。這是因爲TextView沒有默認包裝,如果你不設置它們,也沒有elipses。

你可能想嘗試或者創建自己的佈局,被誇大,或者你可以使用

textView.setSingleLine(false) 
textView.setMaxLines(2) 

如果您需要這並不工作覆蓋getDropDownView

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

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

最簡單的辦法就是使用對話框設計將您的Spinner切換到您的xml中。

<Spinner android:spinnerMode="dialog" /> 
+0

我嘗試setSinglLine on textView,但它不起作用。我將spinnerMode設置爲對話框,它工作。謝謝 – forfiter9

+0

最後,我用第二個選項覆蓋getDopDownView – forfiter9

相關問題