2012-02-13 18 views

答えて

4

の長押し上のヒントのようなアクションバーのメニューオプションでLongClick上のテキストを表示したいですアクションビューをandroid:actionLayout経由で利用することができます。長いクリックイベントのために、独自のウィジェットでリスナーを設定することは大歓迎です。自分で作成しないウィジェットにはアクセスできません。

+0

を行い、その後、有用だった考慮トーストの大きさを取るhttp://stackoverflow.com/a/21026866/630833に応じて、必要なトーストを、置きます。 – jayeffkay

5

user1206890、あなたは長いクリックイベントを聞く必要はありません。あなたがアクションのヒントを表示したい場合は、十分なタイトルをmenuに追加してください。 2.3と4.0でチェックしました。

11

アクションバーのメニュー項目を長押ししてもらいたいですか?私の場合、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; 
} 
+0

しかし、最初に動作しています.2番目のメニュー項目をクリックすると、同じ空のトーストメッセージ – Pinki

+1

@ YeeKhinが表示されます。どうもありがとう 。 –

+0

しかしfindviewbyidは常にnullを返します、なぜですか? – hyyou2010

5

私にとって、次のアプローチは新しい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 
    } 
}); 

重要な注釈:これは、アクションバーに項目が表示されている場合にのみ有効です。したがって、メニュードロップダウンにオプションが表示されている場合、長いクリックで何をしたいかはこの方法ではアクセスできません。

0

「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; 
        } 
       } 
     ); 
関連する問題