操作栏不显示项目
Action bar doesn't show items
我正在开发一个支持 API-9 的 android 应用程序,出现了带有应用程序名称的操作栏,但问题是项目没有出现
这是菜单文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- http://schemas.android.com/apk/lib/com.fakher.actualitefoot -->
<!-- Settings -->
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_settings"
android:title="@string/action_settings"
app:showAsAction="never|withText" />
<!-- Check updates -->
<item
android:id="@+id/action_check_updates"
android:icon="@drawable/ic_action_refresh"
android:title="@string/action_check_updates"
app:showAsAction="never|withText" />
</menu>
主要class:
public class MainActivity extends FragmentActivity {
private final Handler handler = new Handler();
private PagerSlidingTabStrip tabs;
private ViewPager pager;
private PagerAdapter adapter;
private AdView adView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
....
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
private Drawable.Callback drawableCallback = new Drawable.Callback() {
@Override
public void invalidateDrawable(Drawable who) {
getActionBar().setBackgroundDrawable(who);
}
@Override
public void scheduleDrawable(Drawable who, Runnable what, long when) {
handler.postAtTime(what, when);
}
@Override
public void unscheduleDrawable(Drawable who, Runnable what) {
handler.removeCallbacks(what);
}
};
@Override
public void onPause() {
adView.pause();
super.onPause();
}
@Override
public void onResume() {
super.onResume();
adView.resume();
}
@Override
public void onDestroy() {
adView.destroy();
super.onDestroy();
}
}
stykes.xml :
<resources>
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowBackground">@color/background_window</item>
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
</style>
<style name="ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<!--<item name="android:icon">@drawable/ic_launcher</item>-->
<item name="android:background">#ff127d08</item>
</style>
</resources>
我希望操作栏显示包含在菜单文件中声明的项目的菜单
谢谢 :)
对我来说突出的是你有- app:showAsAction="never|withText"
,
"never" 参数将阻止该项目出现。我觉得应该改成:
app:showAsAction="ifRoom"
或:
app:showAsAction="always"
"withText" 也可能搞砸了。我是 android 编程新手,所以我可能是错的。但检查一下,让我知道它是否有效。而且,我看不到所有代码,但是您是否导入了 android.support.v7.app.ActionBar(因为该应用程序适用于 API 9)?没有它也无法运行。
您似乎在尝试使用 appcompat-v7
操作栏向后移植。如果是这种情况,您必须继承 AppCompatActivity
(或其前身 ActionBarActivity
),而不是 FragmentActivity
。由于 AppCompatActivity
和 ActionBarActivity
本身扩展了 FragmentActivity
,您不会失去任何与片段相关的功能。
还有:
将所有 getActionBar()
调用更改为 getSupportActionBar()
确保您的主题继承自 Theme.AppCompat
(或继承自 Theme.AppCompat
的其他主题)
我正在开发一个支持 API-9 的 android 应用程序,出现了带有应用程序名称的操作栏,但问题是项目没有出现 这是菜单文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- http://schemas.android.com/apk/lib/com.fakher.actualitefoot -->
<!-- Settings -->
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_settings"
android:title="@string/action_settings"
app:showAsAction="never|withText" />
<!-- Check updates -->
<item
android:id="@+id/action_check_updates"
android:icon="@drawable/ic_action_refresh"
android:title="@string/action_check_updates"
app:showAsAction="never|withText" />
</menu>
主要class:
public class MainActivity extends FragmentActivity {
private final Handler handler = new Handler();
private PagerSlidingTabStrip tabs;
private ViewPager pager;
private PagerAdapter adapter;
private AdView adView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
....
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
private Drawable.Callback drawableCallback = new Drawable.Callback() {
@Override
public void invalidateDrawable(Drawable who) {
getActionBar().setBackgroundDrawable(who);
}
@Override
public void scheduleDrawable(Drawable who, Runnable what, long when) {
handler.postAtTime(what, when);
}
@Override
public void unscheduleDrawable(Drawable who, Runnable what) {
handler.removeCallbacks(what);
}
};
@Override
public void onPause() {
adView.pause();
super.onPause();
}
@Override
public void onResume() {
super.onResume();
adView.resume();
}
@Override
public void onDestroy() {
adView.destroy();
super.onDestroy();
}
}
stykes.xml :
<resources>
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowBackground">@color/background_window</item>
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
</style>
<style name="ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<!--<item name="android:icon">@drawable/ic_launcher</item>-->
<item name="android:background">#ff127d08</item>
</style>
</resources>
我希望操作栏显示包含在菜单文件中声明的项目的菜单 谢谢 :)
对我来说突出的是你有- app:showAsAction="never|withText"
,
"never" 参数将阻止该项目出现。我觉得应该改成:
app:showAsAction="ifRoom"
或:
app:showAsAction="always"
"withText" 也可能搞砸了。我是 android 编程新手,所以我可能是错的。但检查一下,让我知道它是否有效。而且,我看不到所有代码,但是您是否导入了 android.support.v7.app.ActionBar(因为该应用程序适用于 API 9)?没有它也无法运行。
您似乎在尝试使用 appcompat-v7
操作栏向后移植。如果是这种情况,您必须继承 AppCompatActivity
(或其前身 ActionBarActivity
),而不是 FragmentActivity
。由于 AppCompatActivity
和 ActionBarActivity
本身扩展了 FragmentActivity
,您不会失去任何与片段相关的功能。
还有:
将所有
getActionBar()
调用更改为getSupportActionBar()
确保您的主题继承自
Theme.AppCompat
(或继承自Theme.AppCompat
的其他主题)