我有基本的android微调器,我希望在点击它后,列表中包含其中一个突出显示的项目,最初选择的那个。
就像在这里完成的那样: http://www.warriorpoint.com/blog/wp-content/uploads/2009/05/05spinner-thumb.png
但是我自己的项目布局而不是收音机盒,而是用我自己的背景。
我怎样才能做到这一点?选择器中是否有任何用途,或者我是否必须以编程方式执行此操作?
感谢任何帮助。
答案 0 :(得分:10)
以下是我测试和验证的解决方案。您可以使用setSelection(N)突出显示所需的项目。
play = input('| Please enter h or s (h = Hit, s = Stand:) ')
while play == 's' and totalplayer <= 15:
print('Cannot stand on value less then 15')
答案 1 :(得分:3)
public class MainActivity extends Activity {
Spinner mySpinner;
String[] myArray={"1","2","3","4","5"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mySpinner = (Spinner)findViewById(R.id.spinner_test);
mySpinner.setAdapter(new MyAdapter(this,android.R.layout.simple_spinner_item, myArray));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public class MyAdapter extends ArrayAdapter<String>{
public MyAdapter(Context context, int textViewResourceId,
String[] objects) {
super(context, textViewResourceId, objects);
// TODO Auto-generated constructor stub
}
@Override
public View getDropDownView(int position, View cnvtView, ViewGroup prnt){
LayoutInflater inflater = getLayoutInflater();
View spinnerItem = inflater.inflate(android.R.layout.simple_spinner_item, null);
TextView mytext= (TextView)spinnerItem.findViewById(android.R.id.text1);
mytext.setText(myArray[position]);
//int selected = Spinner.
int selected = mySpinner.getSelectedItemPosition();
if(position == selected){
spinnerItem.setBackgroundColor(Color.BLUE);
}
return spinnerItem;
}
}
}
这应该有所帮助。
答案 2 :(得分:0)
Kotlin版本更直观:
val spinner = Spinner(context)
val adapter = object: ArrayAdapter<Any>(context, android.R.layout.simple_spinner_item, choices.toTypedArray()) {
override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {
return super.getDropDownView(position, convertView, parent).also { view ->
if(position == spinner.selectedItemPosition)
view.setBackgroundColor(Color.rgb(204, 255, 255))
}
}
}
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item
spinner.adapter = adapter
您显然可以设置视图的其他属性-android.R.layout.simple_spinner_dropdown_item
返回的视图是TextView
的子类,因此您可以设置文本对齐方式和类似的属性,例如右对齐文本:
(view as? TextView)?.textAlignment = TEXT_ALIGNMENT_VIEW_END
答案 3 :(得分:-2)
要回答我的问题,你需要这样的事情:
public class mySpinnerAdapter extends SimpleCursorAdapter implements SpinnerAdapter {
public OrderSpinnerAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
// TODO whatever you need
}
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(android.R.layout.simple_dropdown_item_1line, parent, false);
}
// TODO set the background color of the convertView
// depending on your wishes
return convertView;
}
}
这样我们就可以像这样控制下拉列表的创建。如果您需要不同的选择器,可以在XML文件中轻松完成。
然后,当您只是简单地创建适配器并使用方法setAdapter将它们绑定到微调器时。