自定义微调器,带有EditText字段和图像按钮

时间:2013-02-01 17:41:58

标签: android spinner android-custom-view

我正在尝试创建一个使用EditText字段和ImageButton的自定义微调器。然而,我无法找到如何获得我在Spinner中按下ImageButton后显示的相同弹出菜单。

This是我能找到的最接近的问题,但它与我的问题完全不同。

这是我的旧spinner代码:

apModeAdapter = new ArrayAdapter<String>( this, android.R.layout.simple_spinner_item, res.getStringArray( R.array.anti_pump_ap_mode_array )  );
apModeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
apModeSpinner = (Spinner) findViewById(R.id.apModeSpinner);
apModeSpinner.setAdapter(apModeAdapter);
apModeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

或者,在ArrayList

中使用Resources:代替数组
pumpCountAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, pumpCountList);
pumpCountAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
pumpCountSpinner.setAdapter(pumpCountAdapter);
pumpCountSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

我不想要PopUp Menu

我确实想要类似于ContextMenu的东西,但我不想要它底部的按钮。我尝试自己实现并删除它们,但它不能干净地工作。 onClick方法只有一个按下按钮的参数。

public void onClick(View v) {
    // TODO Auto-generated method stub

    AlertDialog.Builder ab=new AlertDialog.Builder(MoreParameters.this);
    ab.setTitle(R.string.anti_pump_ap_mode);
    ab.setSingleChoiceItems(res.getStringArray( R.array.anti_pump_ap_mode_array ), 0,new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        // onClick Action             
    }
});
ab.show();

虽然ContextMenu接近我想要的,但我真的想要复制上面显示的微调器。

1 个答案:

答案 0 :(得分:1)

我找到的解决方案是将ab.setSingleChoiceItems()更改为ab.setItems(),这需要删除传递的0参数。

此:

public void onClick(View v) {
    // TODO Auto-generated method stub

    AlertDialog.Builder ab=new AlertDialog.Builder(MoreParameters.this);
    ab.setTitle(R.string.anti_pump_ap_mode);
    ab.setSingleChoiceItems(res.getStringArray( R.array.anti_pump_ap_mode_array ), 0,new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        // onClick Action             
    }
});
ab.show();

成为这个:

public void onClick(View v) {
    // TODO Auto-generated method stub

    AlertDialog.Builder ab=new AlertDialog.Builder(MoreParameters.this);
    ab.setTitle(R.string.anti_pump_ap_mode);
    ab.setItems(res.getStringArray( R.array.anti_pump_ap_mode_array ),new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        // onClick Action             
    }
});
ab.show();