我是Android编程世界的新手,我不明白为什么系统没有在ActionBar'左侧显示应用程序图标。我的第一个Android应用程序(HelloWorld)。
在' ActionBar'开发者指导它说: "默认情况下,系统使用操作栏中的应用程序图标,由"应用程序"中的icon属性指定。或"活动"元件。但是,如果您还指定了徽标属性,则操作栏将使用徽标图像而不是图标。" (Action bar)
我的Android-manifest文件并未定义'徽标'属性,但它只定义了一个'图标'属性。因此,图标定义的图标为'属性应显示在' ActionBar'的左侧。作为应用程序图标。但是,没有显示图标。
我的Android-manifest文件如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.holamundo"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppBaseTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
我的样式文件如下:
/res/values/styles.xml:
<resources>
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
</style>
<style name="AppTheme" parent="AppBaseTheme">
</style>
</resources>
/res/values-v11/styles.xml:
<resources>
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
</style>
</resources>
/res/values-v14/styles.xml:
<resources>
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>
</resources>
任何人都可以解释为什么我的应用程序图标没有显示在ActionBar中,我应该修改什么才能显示这样的图标?感谢。
答案 0 :(得分:1)
您的活动必须扩展ActionBarActivity。
例如:
public class MainActivity extends ActionBarActivity
{
...
}
或者在您的活动中尝试此操作:
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setIcon(R.drawable.ic_launcher);
如果使用支持库,则必须使用getSupportActionBar()。
答案 1 :(得分:0)
我还遇到了菜单项图标未显示的问题。我有一个工具栏,并将其设置为支持操作栏。清单声明了一个NoActionBar主题。本来我以为动作项目的图标都不会显示,但是我发现某些可绘制的图标会显示。例如,“ @ android:drawable / ic_menu_add”将起作用,但“ drawable / ic_launcher_background”将不起作用。这是我在onCreateOptionsMenu期间添加的菜单结构。项目action_logo使用png文件,该文件也可以使用。 “ ic_launcher_background”是可绘制的图形,在创建项目时会自动添加。
<item
android:id="@+id/action_help"
android:orderInCategory="50"
android:title="@string/action_help"
android:icon="@android:drawable/ic_menu_add"
app:showAsAction="always" />
<item
android:id="@+id/action_more"
android:orderInCategory="60"
android:title="@string/action_help"
android:icon="@drawable/ic_launcher_background"
app:showAsAction="always" />
<item
android:id="@+id/action_logo"
android:orderInCategory="70"
android:title="@string/action_help"
android:icon="@drawable/tabellae_logo"
app:showAsAction="always" />
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
我一直试图做的是在onPrepareOptionsMenu调用过程中即时生成一个BitmapDrawable并将其添加到菜单中,但是那种drawable都不会显示。
我有另一个测试应用程序,其清单设置为ActionBarTheme。在此配置中,您无需调用setSupportActionBar。 (如果尝试这样做是错误的)现在,此测试应用程序可以正确显示所有菜单图标。它是一个AppCompatActivity应用程序。我的猜测是,此测试应用程序可能使用的是旧样式的ActionBar,而不是新推荐的ToolBar方法,这就是它起作用的原因。
我的首选是使用ToolBar方法,但是我没有解释为什么某些图标可绘制对象起作用而另一些却不起作用的原因。在我对这个问题的研究中,我还没有看到有人提到这些观察结果。也许有人会对为什么某些可绘制对象不能用于菜单项图标有更多的了解。