ボタンをクリックしたときにコンテキスト メニューを開きたいのですが、ボタンをクリックしたときにどのリスト項目がフォーカスされているかを知る必要があります。その方法を知っていますか?メソッドにはどのコードを含める必要がありonclick
ますか?
4 に答える
私は同じものを探していましたが、コンテキストメニューの代わりにダイアログを使用する必要があることがわかりました
final CharSequence[] items = {"Red", "Green", "Blue"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = builder.create();
alert.show();
http://developer.android.com/guide/topics/ui/dialogs.html#AlertDialog
なんらかの理由で本当にやりたい場合...(私の場合、怠惰から)
アクティビティ中onCreate
またはユーザーがボタンに触れる前のどこかで、registerForContextMenu
そのボタンを実行します。次に、実際のボタンの onClick ハンドラで、 を呼び出しますopenContextMenu(View)
。
たとえば、次のようなxmlで宣言されたボタンがあります
<Button
android:id="@+id/btn_help"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onHelp"
android:text="@string/help_btn_text" />
私のonCreateで
registerForContextMenu(findViewById(R.id.btn_help));
および onHelp 関数で
public void onHelp(View v) {
openContextMenu(v);
}
これは、ビュー v がコンテキスト メニューに登録されているビューと同じであるため機能します。
まず、registerForContextMenu(View view)を呼び出してビューを登録する必要があります。次に、onCreateContextMenu()をオーバーライドしてメニューを追加し、最後にonContextItemSelected()をオーバーライドして各メニューにロジックを配置します。
まず、なぜ を使用する必要があるのかを理解する必要がありますContextMenu
。ビューの機能はContextMenu
、PC の右クリック メニューに似ています。これは、アイテムで「使用可能な操作」を意味します。
あなたの説明によると、実際に必要なのは、 List を持つカスタマイズされた Dialogだと思います。これは、 Button をクリックすると表示され、あなたのフォーカスされたアイテムを取得することもできますListView
。ContextMenu
次に、本当にメニューが必要な一部のビューの登録を保存できます:)