6

スピナーの新しいIceCreamSandwhichバージョンを模倣しようとしています。このバージョンでは、ポップアップダイアログではなくドロップダウンリストのように見えます。私が話していることのアイデアを得るためにこのリンクを見てください。ActionBarSherlockを使用して目的の効果を得ると述べているいくつかの投稿を読みました。ただし、これはアクションバーでのみ使用するために作成されているので、ICSスピナーをアクションバーから取り出すにはどうすればよいですか?

ここにはかなり良い答えがありますが、これは少しやり過ぎだと思いますか?もっと簡単な方法はありますか?

4

1 に答える 1

17

まず、このリンクを参照して、自分の質問に答えるべきかどうかを確認しました。これは、同様の問題に直面している人にとって非常に役立つと感じたので、これがこのWebサイトの適切なエチケットではない場合はお詫びします(あなた自身の質問に答えるため)。

今、私はこの問題の解決策を見つけようとしてつまずき、試行錯誤して成功しました。したがって、ActionBarSherlock SDKをダウンロードしてプロジェクトにセットアップしたら、スピナーを組み込むレイアウトを作成します。

    <com.actionbarsherlock.internal.widget.IcsSpinner
            android:id="@+id/spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/title"
            android:layout_margin="10sp"
            android:layout_centerHorizontal="true"
            android:textSize="18sp" />

上記のコードは、ActionBarSherlockライブラリにあるスピナーのICSバージョンを使用します。次に、アクティビティでスピナーオブジェクトを宣言してインスタンス化します(キャストを使用)。ただし、通常のSpinnerクラスは使用せず、ActionBarSherlockライブラリにあるIcsSpinnerクラスを使用することに注意してください。

IcsSpinner spinner = (IcsSpinner)findViewById(R.id.spinner);

ここで、通常のスピナーの場合と同じように、次のようにアダプターを作成します。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item, elements);
spinner.setAdapter(adapter);

最後に、を設定する必要がありますonItemSelectedListener。ここでの唯一の大きな違いは、単に:IcsAdapterView.OnItemSelectedListenerではなく使用することです。OnItemSelectedListener

spinner.setOnItemSelectedListener(new IcsAdapterView.OnItemSelectedListener(){
    @Override
    public void onItemSelected(IcsAdapterView<?> parent, View view, int position, long id){
    }
    @Override
    public void onNothingSelected(IcsAdapterView<?> parent){
    }
});

以上です。スピナーオブジェクトを使用する場合とそれほど違いはありません。簡単ですが、理解するのに少し時間がかかりましたので、お役に立てば幸いです。

そうそう、(マニフェストで)次のようにActionBarSherlockテーマを使用することを忘れないでください:

android:theme="@style/Theme.Sherlock"
于 2012-12-10T22:21:00.350 に答える