4

Android Actionbar item options long click について誰でも知ることができますか? ActionBar long press の長押しのヒントのように、アクションバー メニュー オプションの LongClick にテキストを表示したい

4

6 に答える 6

10

アクションバーのメニュー項目の長押しをキャプチャしますか? 私に関しては、2,3時間を見つけた後、この解決策を見つけました。これは私にとって完璧に機能します。

      @Override
     public boolean onCreateOptionsMenu(final Menu menu) {



    getMenuInflater().inflate(R.menu.menu, menu);

    new Handler().post(new Runnable() {
        @Override
        public void run() {
            final View v = findViewById(R.id.action_settings);

            if (v != null) {
                v.setOnLongClickListener(new CustomLongOnClickListener());
            }
        }
    });

    return true;
}
于 2014-04-03T07:39:32.277 に答える
6

私にとっては、次のアプローチは新しい Android バージョンでは問題なく機能します。Android 4.2 と Android 5.0.1 でテストしました。

アイデアは、アクション アイコン ビューをカスタム ビューに置き換えることです。ここでは、シングル クリックを処理する必要があり、ロング クリックを処理できます。

外観を通常のアクション バー アイコンとまったく同じにしたい場合は、次のようにします。

最初に、アイコンを含む ImageButton のみを含むレイアウトを作成します。

<?xml version="1.0" encoding="utf-8"?>
<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myButton"
    style="?android:attr/actionButtonStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:contentDescription="@layout/text_view_initializing"
    android:src="@drawable/ic_action_plus" />

次に、この ImageButton をアクション バーに配置し、リスナーをアタッチします。

MenuItem myItem = menu.findItem(R.id.my_action);
myItem.setActionView(R.layout.my_image_button);
myItem.getActionView().setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(final View v) {
        // here, I have to put the stuff that normally goes in onOptionItemSelected 
    }
});
myItem.getActionView().setOnLongClickListener(new OnLongClickListener() {
    @Override
    public boolean onLongClick(final View v) {
        // here, I put the long click stuff
    }
});

重要な注意: これは、アイテムがアクション バーに表示される場合にのみ機能します。そのため、オプションがメニュードロップダウンに表示されている場合、長いクリックでやりたいことはすべてこの方法ではアクセスできません。

于 2015-08-10T14:03:31.987 に答える
5

user1206890、ロング クリック イベントをリッスンする必要はありません。アクションのヒントを表示したい場合は、メニュー追加でタイトルを設定するだけで十分です。2.3と4.0で確認。

于 2012-08-12T01:16:22.540 に答える
4

を介して独自のアクション ビューを作成する場合android:actionLayoutは、ロング クリック イベント用に独自のウィジェットにリスナーを設定できます。自分で作成していないアクション バーのウィジェットにはアクセスできません。

于 2012-02-13T13:37:32.953 に答える
1

「findViewById」が最も簡単に見つける方法だと思います。
やるだけ

View action_example = findViewById(R.id.action_example);
        if(action_example!=null)action_example.setOnLongClickListener(
                new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View v) {
                        Toast.makeText(MainActivity.this, "action_example", Toast.LENGTH_SHORT).show();
                        return true;
                    }
                }
        );
于 2016-04-08T03:45:26.347 に答える