是否可以在Spinner列表中將特定條目顯示爲禁用?如何禁用Spinner中的項目
也就是說,我想總是顯示四個條目(比如說北,南,東和西)的微調,但是我希望能夠禁用其中的任何一個,這樣就顯得灰色並且不可選擇。
這是可能的,還是我必須每次都重新創建列表,而忽略無效條目?
是否可以在Spinner列表中將特定條目顯示爲禁用?如何禁用Spinner中的項目
也就是說,我想總是顯示四個條目(比如說北,南,東和西)的微調,但是我希望能夠禁用其中的任何一個,這樣就顯得灰色並且不可選擇。
這是可能的,還是我必須每次都重新創建列表,而忽略無效條目?
這可能
它不會出現如此。你用ListView
這樣做的方式涉及到areAllItemsEnabled()
和isEnabled()
。但是,這些是ListAdapter
接口上的方法,而不是SpinnerAdapter
接口。所以,我懷疑他們會被Spinner
忽略。
// Create spinner month, and disable month < today
List<CharSequence> listMonth = new ArrayList<CharSequence>();
for (int m = 0; m < 12; m++) {
if (m < 9) {
listMonth.add("0" + (m + 1));
} else {
listMonth.add("" + (m + 1));
}
}
// Create spinner item
adapterMonth = new ArrayAdapter<CharSequence>(this,
R.layout.layout_spinner_item, listMonth) {
// Disable click item < month current
@Override
public boolean isEnabled(int position) {
// TODO Auto-generated method stub
if (year <= max_year && position < max_month - 1) {
return false;
}
return true;
}
// Change color item
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
// TODO Auto-generated method stub
View mView = super.getDropDownView(position, convertView, parent);
TextView mTextView = (TextView) mView;
if (year <= max_year && position < max_month - 1) {
mTextView.setTextColor(Color.GRAY);
} else {
mTextView.setTextColor(Color.BLACK);
}
return mView;
}
};
adapterMonth
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spn2.setAdapter(adapterMonth);
工作就像一個怪異的魅力!謝謝! :) – 2015-12-24 06:18:45
這是正確的,而不是'TextView mTextView =(TextView)mView;' 你必須使用'TextView mTextView =(TextView)mView.findViewById(R.layout.layout_spinner_item);' – 2018-01-10 07:59:05
public class MySpinnerAdapter extends BaseAdapter {
@Override
public void isEnabled(int position) {
return getItem(position).isEnabled();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = View.inflate(parent.getContext(), R.layout.item, null);
}
if(!isEnabled(position)) {
convertView.setEnabled(false);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//NO-OP: Just intercept click on disabled item
}
});
}
return convertView;
}
}
([在轉項的更改Android文本顏色]的可能重複http://stackoverflow.com/questions/5836254/android-change-text-color-of-items-in-spinner ) – 2014-06-20 03:55:36
@Jason,這是一樣的,但我的第一。這不是他的重複嗎? – FrinkTheBrave 2014-06-25 07:53:29
重複是誰並不重要,只有重複存在並可以歸檔。 – Corey 2017-10-24 18:04:27