Android任何人都可以知道有关Actionbar项目选项的长按,我想在长按操作栏菜单选项上显示文本,就像长按actionBar长按
上的提示一样答案 0 :(得分: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;
}
答案 1 :(得分:5)
user1206890,您不需要听长按活动。如果你想要显示动作提示,将在menu添加中设置足够的标题。检查2.3和4.0。
答案 2 :(得分: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
}
});
重要说明:仅当项目出现在操作栏中时,此选项才有效。因此,如果选项出现在菜单下拉列表中,那么无论您想要在长时间点击中做什么都不会以这种方式访问。
答案 3 :(得分:4)
如果您通过android:actionLayout
创建自己的操作视图,欢迎您在自己的小部件上设置侦听器以进行长按活动。您无权访问自己未创建的操作栏中的小部件。
答案 4 :(得分:1)
由于@YeeKhin,这是与我一起工作的功能代码 将“ main”更改为菜单名称,将“ action_refresh”更改为操作名称,将“ Activity”更改为您的活动名称
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
new Handler().post(new Runnable() {
@Override
public void run() {
final View v = findViewById(R.id.action_refresh);
if (v != null) {
v.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(Activity.this,"Long Press!!",Toast.LENGTH_LONG).show();
return false;
}
});
}
}
});
return true;
}
答案 5 :(得分:0)
我认为&#34; findViewById&#34;是最容易找到的方法 只是做
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;
}
}
);