0

我正在尝试创建一个使用 EditText 字段和 ImageButton 的自定义微调器。但是,在按下 ImageButton 后,我找不到如何让我最初在 Spinner 中显示的相同弹出菜单。

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

这是我的旧微调器代码:

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

我确实想要类似于 a 的东西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与我想要的很接近,但我真的很想复制上面显示的微调器。

4

1 回答 1

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();
于 2013-02-04T17:04:24.650 回答