1

ダイアログモードでスピナーを使用しています。setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); で Spinner に SimpleCursorAdapter を設定しました。それはうまくいきます。

simple_spinner_dropdown_item の代わりに、カスタム レイアウトを渡そうとしていますが、これもうまく機能します。

ただ、オリジナルの simple_spinner_dropdown_item のようなラジオボタンがないのですが…。スピナー ダイアログが表示されたときに選択されるカスタム spinner_dropdown_item 内にラジオ ボタンを追加することは可能ですか?

4

2 に答える 2

0

はい、可能ですが、スピナー用に別のクラスを定義する必要があります。これを見てください。

要件を取得するためのもう1つのオプションがあります。あれはAlert dialog

Androidのラジオボタン付きのこのアラートダイアログウィンドウと、Androidでカスタムおよびドロップダウンタイプのダイアログとダイアログを作成する方法を確認してください

于 2012-10-03T04:07:04.530 に答える
0

さて、私は解決策を見つけました。ListView (スピナー ダイアログの内部) は、View が Checkable であるかどうかを確認し、setChecked を呼び出します。android.R.layout.simple_spinner_dropdown_item はチェック可能であるため、機能します。したがって、私のカスタム リスト アイテムでは、Checkable を実装する LinearLayout を作成しました。

public class CheckableLinearLayout extends LinearLayout implements Checkable
{
private boolean _isChecked = false;

public CheckableLinearLayout(Context context)
    {
    super(context);
    }

public CheckableLinearLayout(Context context, AttributeSet attrs)
    {
    super(context, attrs);
    }

@Override
public void setChecked(boolean checked)
    {
    _isChecked = checked;

    for (int i = 0; i < getChildCount(); i++)
        {
        View child = getChildAt(i);
        if (child instanceof Checkable)
            {
            ((Checkable) child).setChecked(_isChecked);
            }
        }
    }

@Override
public boolean isChecked()
    {
    return _isChecked;
    }

@Override
public void toggle()
    {
    _isChecked = !_isChecked;
    }

}

したがって、ListView は setChecked を呼び出し、それを子ビューに伝達すると、CheckBox / RadioButton が正しくチェック/チェック解除されます。

于 2012-10-07T19:52:59.227 に答える