我有一個要求,我有一個圖標(不是應用程序圖標),需要在操作欄的左側。如何檢測自定義操作欄的點擊?
我試着創建自定義視圖,但我不知道如何檢測點擊該圖標。
想到的其他選項是讓setIcon(mycustomicon)並處理onSelectionSelected方法上的點擊事件;但是這個方法也沒有被調用,也沒有工作。
我正在使用actionbar sherlockholmes庫。是因爲那個嗎?
請幫助我,因爲我堅持了幾天。
在此先感謝
我有一個要求,我有一個圖標(不是應用程序圖標),需要在操作欄的左側。如何檢測自定義操作欄的點擊?
我試着創建自定義視圖,但我不知道如何檢測點擊該圖標。
想到的其他選項是讓setIcon(mycustomicon)並處理onSelectionSelected方法上的點擊事件;但是這個方法也沒有被調用,也沒有工作。
我正在使用actionbar sherlockholmes庫。是因爲那個嗎?
請幫助我,因爲我堅持了幾天。
在此先感謝
如果您正在使用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
}
});
我有多於一個視圖我已經使用開關(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
ùDON需要創建自定義視圖中JST菜單佈局(具有所需的圖標)添加的項。然後處理onOptionSelected(),並確保你回國真正
你可以讓自己的「行動」,像這樣
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」的實現。
這可能會幫助你
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******/
}
});
您檢查了[這個問題](http://stackoverflow.com/a/7981633/1479570)?似乎相關 – DroidBender 2012-07-18 06:33:46
是的,但我沒有得到點擊事件時,我設置圖標。我不知道爲什麼。 – Preethi 2012-07-18 14:25:05
可以參考下面鏈接http://stackoverflow.com/a/7981633/1441666操作欄中 – Nirali 2012-07-18 06:41:02