我有一个要求,我需要在操作栏的左侧有一个图标(不是应用程序图标)。
我尝试创建自定义视图,但我不知道如何检测对该图标的点击。
想到的其他选项是使用 setIcon(mycustomicon) 并处理 onOptionSelected 方法的点击事件;但是这个方法也没有被调用并且不起作用。
我正在使用 actionbar sherlockholmes 库。是不是因为这个?
请帮助我,因为我坚持了好几天。
提前致谢
我有一个要求,我需要在操作栏的左侧有一个图标(不是应用程序图标)。
我尝试创建自定义视图,但我不知道如何检测对该图标的点击。
想到的其他选项是使用 setIcon(mycustomicon) 并处理 onOptionSelected 方法的点击事件;但是这个方法也没有被调用并且不起作用。
我正在使用 actionbar sherlockholmes 库。是不是因为这个?
请帮助我,因为我坚持了好几天。
提前致谢
这可能会帮助你
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******/
}
});
如果要添加自定义视图getSupportActionBar().setCustomView(resId)
,则需要通过调用来获取新创建的 View 对象getSupportActionBar().getCustomView()
。setOnClickListener
然后,您可以像通常对其他视图所做的那样设置您的点击处理程序。
另一方面,如果您正在使用将 View 作为第一个参数的 setCustomView 的重载之一,则可以省略第一步,因为您已经有一个 View 对象可以使用。
这是第一种情况的示例:
getSupportActionBar().setCustomView(R.layout.test);
getSupportActionBar().setDisplayShowCustomEnabled(true);
getSupportActionBar().getCustomView().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// your code here
}
});
您可以制作自己的“动作”,就像这样
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”的实现。
您不需要创建自定义视图 jst 在菜单布局中添加项目(具有所需的图标)。然后处理 onOptionSelected() 并确保您返回true