Java Android上未出现操作按钮
我一直试图在我的Android应用程序上安装一个动作按钮,但失败得很惨。我读了这么多的问题和答案,似乎什么都不管用。视频链接总是出现在我不想要的菜单中 这是菜单XmlJava Android上未出现操作按钮,java,android,android-fragments,android-actionbar,Java,Android,Android Fragments,Android Actionbar,我一直试图在我的Android应用程序上安装一个动作按钮,但失败得很惨。我读了这么多的问题和答案,似乎什么都不管用。视频链接总是出现在我不想要的菜单中 这是菜单Xml <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:puertogaleradivesites="http://schemas.android.com/apk/res-auto" > <!-- Search, shoul
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:puertogaleradivesites="http://schemas.android.com/apk/res-auto" >
<!-- Search, should appear as action button -->
<item android:id="@+id/youtube"
android:icon="@drawable/ic_play_arrow_black_24dp"
android:title="YouTube"
puertogaleradivesites:showAsAction="ifRoom"/>
<item android:id="@+id/action_settings"
puertogaleradivesites:showAsAction="never"
android:title="Settings"/>
</menu>
这里是主要的Java片段
public class DivesiteFragment extends Fragment {
private Divesite mDivesite;
private TextView mDepthField;
private TextView mSiteDescription;
private TextView mDistance;
private ProportionalImageView mImageView;
public static final String EXTRA_SITE_ID = "com.blueribbondivers.extraSiteID";
private Context mContext;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
UUID crimeId = (UUID)getActivity().getIntent()
.getSerializableExtra(EXTRA_SITE_ID);
mDivesite = DiveSites.get(getActivity()).getDiveSite(crimeId);
mContext = getActivity().getApplicationContext();
//getActivity().getActionBar().setTitle(Html.fromHtml("<font color=\"#1c3565\">" + mDivesite.getName() + "</font>"));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_divesite, parent, false);
Resources resources = mContext.getResources();
//setHasOptionsMenu(true);
mDepthField = (TextView)v.findViewById(R.id.divesite_display_depth);
mDepthField.setText(mDivesite.getMaxDepth());
mSiteDescription = (TextView)v.findViewById(R.id.divesite_display_description);
mSiteDescription.setText(mDivesite.getSiteDescription());
mSiteDescription.setMovementMethod(new ScrollingMovementMethod());
mDistance = (TextView)v.findViewById(R.id.divesite_display_distance);
mDistance.setText(mDivesite.getTravelTime());
mImageView = (ProportionalImageView)v.findViewById(R.id.divesite_display_imageView);
String imageName = mDivesite.getPhoto();
final int resourceID = resources.getIdentifier(imageName,"drawable",mContext.getPackageName());
mImageView.setImageResource(resourceID);
setHasOptionsMenu(true);
return v;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.divesitemenu, menu);
super.onCreateOptionsMenu(menu,inflater);
}
}
我在Github上也有完整的项目
如需任何帮助,将不胜感激。如需显示Youtbe、gmail等菜单: 您应该始终使用您的应用程序:showAsAction=always
希望它能对你有所帮助。你的活动范围扩大了。如果您想要一个向后兼容的操作栏,它可以在所有API级别上运行,API 21中的情况发生了显著的变化,那么您应该扩展它。如果您想将ActioBar项a显示为按钮而不是溢出菜单,那么您需要为它定义一个android:orderInCategory。这样它就不会出现在溢出菜单中
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_magnify"
android:orderInCategory="100"
app:showAsAction="ifRoom|collapseActionView"
android:title="@string/noticiation_count"/>
</menu>
测试和工作完美的碎片 你想要什么?我没听清楚?对不起,应该说清楚一点。该菜单作为下拉菜单加载。YouTube菜单项android:id=@+id/YouTube进入设置菜单,没有显示为按钮,它被添加到溢出菜单。这对我不起作用,不确定是否是因为不同的片段。我使用的是全息主题,不确定这是否会有所不同。这也删除了我的额外设置菜单。它仍然只是将youtube链接放在溢出菜单中
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_magnify"
android:orderInCategory="100"
app:showAsAction="ifRoom|collapseActionView"
android:title="@string/noticiation_count"/>
</menu>
setHasOptionsMenu(true);