如何在android中自定义Spinner小部件?

时间:2009-09-01 12:50:26

标签: android

我在我的应用程序中使用Spinner控件,而我的代码是

    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);

除了Spinner之外,所有组件都被添加。

所以请任何人为此提供一些解决方案。

2 个答案:

答案 0 :(得分:1)

现在使用以下命令将您的tl添加到ScrollView:

ScrollView sv = new Scrollview(this);
sv.addview(tl);
setContentview(sv);

它应该有用。

答案 1 :(得分:0)

@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;
    }

}

使用上面的代码,您可以回答您的问题。 我希望这是有帮助的。