如何在android中定制Spinner小部件?
我在应用程序中使用微调器控件,我的代码是如何在android中定制Spinner小部件?,android,Android,我在应用程序中使用微调器控件,我的代码是 Spinner s1=new Spinner(this); s1.setLayoutParams(new LayoutParams(100,30)); ArrayAdapter adapter=new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1); adapter.setDropDownViewResource(android.R.l
Spinner s1=new Spinner(this);
s1.setLayoutParams(new LayoutParams(100,30));
ArrayAdapter adapter=new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.add("One");
adapter.add("Two");
adapter.add("Three");
s1.setAdapter(adapter);
这在linearLayout中可以很好地工作。当我在TableLayout中使用代码时,控件不会显示。我必须生成动态布局,因此我不使用XML部分,只通过Java代码添加控件
TableLayout tl=new TableLayout(this);
TableRow tr=new TableRow(this);
tr.addView(s1);
tl.addView(tr);
添加除微调器以外的所有组件
因此,请任何人对此给出一些解决方案。现在使用以下方法将tl添加到ScrollView:
ScrollView sv = new Scrollview(this);
sv.addview(tl);
setContentview(sv);
它应该可以工作。@code>@覆盖
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("Name", "One");
map.put("Icon", R.drawable.icon);
list.add(map);
map = new HashMap<String, Object>();
map.put("Name", "Two");
map.put("Icon", R.drawable.icon);
list.add(map);
Spinner spin = (Spinner) findViewById(R.id.spin);
myAdapter adapter = new myAdapter(getApplicationContext(), list,
R.layout.list_layout, new String[] { "Name", "Icon" },
new int[] { R.id.name, R.id.icon });
spin.setAdapter(adapter);
}
private class myAdapter extends SimpleAdapter {
public myAdapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.list_layout,
null);
}
HashMap<String, Object> data = (HashMap<String, Object>) getItem(position);
((TextView) convertView.findViewById(R.id.name))
.setText((String) data.get("Name"));
((ImageView) convertView.findViewById(R.id.icon))
.setImageResource(R.drawable.icon);
return convertView;
}
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
setContentView(R.layout.main);
ArrayList=新建ArrayList();
HashMap=newHashMap();
地图。放置(“名称”、“一”);
地图放置(“图标”,R.drawable.Icon);
列表。添加(地图);
map=新的HashMap();
地图。放置(“名称”、“两个”);
地图放置(“图标”,R.drawable.Icon);
列表。添加(地图);
微调器旋转=(微调器)findViewById(R.id.spin);
myAdapter=新的myAdapter(getApplicationContext(),列表,
R.layout.list_布局,新字符串[]{“Name”,“Icon”},
新的int[]{R.id.name,R.id.icon});
spin.setAdapter(适配器);
}
私有类myAdapter扩展了SimpleAdapter{
公共myAdapter(上下文,列表>数据,
int资源,字符串[]从,int[]到){
超级(上下文、数据、资源、从、到);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=GetLayoutFlater()。充气(R.layout.list\U布局,
无效);
}
HashMap数据=(HashMap)getItem(位置);
((TextView)convertView.findViewById(R.id.name))
.setText((字符串)data.get(“名称”);
((ImageView)convertView.findViewById(R.id.icon))
.setImageResource(R.drawable.icon);
返回视图;
}
}
使用上述代码,您将获得问题的答案。
我希望这对你有帮助