1.需求中使用Spinner,不允許有默認選中,在網上查了好多,有設置
spinner.setSelection(-1,true);
也有設置如下:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
/**
* 設置item的字體顏色
*/
if(isFrist){
isFrist=false;
}else{
TextView textView= (TextView) view;
textView.setTextColor(getResources().getColor(R.color.hei));
Toast.makeText(MainActivity.this,""+parent.getItemIdAtPosition(position),Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
但是spinner初始時會默認走setOnItemSelectedListener方法,並使得position==0;如上設置,雖然不會顯示默認了,但是第一次點擊卻不能選中第0項,
只能在選取其他項后,才能再選擇0項。
再看,下面的設置:給予設置默認為1,這是,spinner初始時不會走setOnItemSelectedListener方法了,但是他第一次點擊不能選擇第1項了。
spinner.setSelection(1,true);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
/**
* 設置item的字體顏色
*/
TextView textView= (TextView) view;
textView.setTextColor(getResources().getColor(R.color.hei));
Toast.makeText(MainActivity.this,""+parent.getItemIdAtPosition(position),Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
2.后采用的TextView加ListPopupWindow實現這個需求:
TextView textView2;
private ListPopupWindow popupWindow;
private List<String> strings;
textView2= (TextView) findViewById(R.id.textView2);
strings = new ArrayList<String>();
strings.add("item1");
strings.add("item2");
strings.add("item3");
popupWindow = new ListPopupWindow(this);
popupWindow.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,strings));
popupWindow.setAnchorView(textView2);
popupWindow.setWidth(LinearLayout.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(LinearLayout.LayoutParams.WRAP_CONTENT);
popupWindow.setModal(true);
popupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
textView2.setText(strings.get(position));
popupWindow.dismiss();
Toast.makeText(MainActivity.this,""+textView2.getText().toString(),Toast.LENGTH_SHORT).show();
}
});
textView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.show();
}
});
3.實現效果:
左側是TextView和ListPopupWindow實現效果,右側是Spinner效果
下拉效果對比: