1

我有一個要求,我有一個圖標(不是應用程序圖標),需要在操作欄的左側。如何檢測自定義操作欄的點擊?

我試着創建自定義視圖,但我不知道如何檢測點擊該圖標。

想到的其他選項是讓setIcon(mycustomicon)並處理onSelectionSelected方法上的點擊事件;但是這個方法也沒有被調用,也沒有工作。

我正在使用actionbar sherlockholmes庫。是因爲那個嗎?

請幫助我,因爲我堅持了幾天。

在此先感謝

+0

您檢查了[這個問題](http://stackoverflow.com/a/7981633/1479570)?似乎相關 – DroidBender 2012-07-18 06:33:46

+0

是的,但我沒有得到點擊事件時,我設置圖標。我不知道爲什麼。 – Preethi 2012-07-18 14:25:05

+0

可以參考下面鏈接http://stackoverflow.com/a/7981633/1441666操作欄中 – Nirali 2012-07-18 06:41:02

回答

5

如果您正在使用getSupportActionBar().setCustomView(resId)添加自定義視圖,你需要通過調用getSupportActionBar().getCustomView()獲得新創建的視圖對象返回。然後,您可以像使用其他人的意見一樣使用setOnClickListener來設置您的點擊處理程序。另一方面,如果您正在使用setCustomView的重載之一將視圖作爲第一個參數,則可以省略第一步,因爲您已經有一個View對象可以使用。

這裏是第一種情況的一個示例:

getSupportActionBar().setCustomView(R.layout.test); 
getSupportActionBar().setDisplayShowCustomEnabled(true); 

getSupportActionBar().getCustomView().setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View view) { 
     // your code here 
    } 
}); 
+0

我有多於一個視圖我已經使用開關(view.getId()){ \t \t \t \t \t \t情況下R.id.menu: \t \t \t \t \t \t \t Toast。makeText(getApplicationContext(), 「菜單」, \t \t \t \t \t \t \t \t \t Toast.LENGTH_SHORT).show(); \t \t \t \t \t \t \t break; \t \t \t \t \t \t情況R.id.textView: \t \t \t \t \t \t \t Toast.makeText(getApplicationContext(), 「頭」, \t \t \t \t \t \t \t \t \t Toast.LENGTH_SHORT).show (); \t \t \t \t \t \t \t break; \t \t \t \t \t \t} 爲這一點,但無法設置單擊事件u能請建議我在哪裏,我做錯了 – Dilip 2013-11-07 06:17:58

0

ùDON需要創建自定義視圖中JST菜單佈局(具有所需的圖標)添加的項。然後處理onOptionSelected(),並確保你回國真正

1

你可以讓自己的「行動」,像這樣

public class CustomAction extends AbstractAction 
{ 
    public interface CustomActionListener 
    { 
     public void onAction(int drawable); 
    } 

    private CustomActionListener listener; 
    private int drawable; 

    public CustomAction(CustomActionListener listener, int drawable) 
    { 
     super(drawable); 

     this.listener = listener; 
     this.drawable = drawable; 
    } 

    @Override 
    public void performAction(View view) 
    { 
     if (listener != null) 
     { 
      listener.onAction(drawable); 
     } 
    } 
} 

然後,操作添加到動作欄中。

CustomAction menuAction = new CustomAction(this, R.drawable.ic_menu); 
ActionBar.addAction(menuAction); 

確保該活動實現了CustomActionListener,您可以在其中執行幾乎任何操作。

@Override 
public void onAction(int drawable) 
{ 
    // your code goes here... 
} 

我必須承認我使用的johannilsson/android-actionbar略加修改。但主要想法是知道如何使用Action和AbstractAction。查看庫中「BackAction」的實現。

6

這可能會幫助你

getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
      getSupportActionBar().setCustomView(R.layout.actionbar); 
      /***THis will be used to creatre a custom action bar click listener **/ 
      View v =getSupportActionBar().getCustomView(); 
      /*** sample click is a id of the view i have used in action bar view ***/ 
      ((Button)v.findViewById(R.id.smaple_click)).setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        /*****Add your click function here******/ 

       } 
      });