这里有很多关于向ActionBar添加图标的问题但没有解决我的问题。如果您知道此问题的副本,请随时发表评论或关闭此问题。
我将我的项目迁移到IntelliJ,而我之前的IDE(Eclipse)没有遇到这个问题。
问题:操作栏中未显示应用图标。
我认为它应该默认添加,这就是为什么我无法通过XML添加它
这是它的XML
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity" >
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="always" />
</menu>
谢谢!
答案 0 :(得分:38)
从AppCompat版本21开始,操作栏跟在material design guidelines后面并使用Toolbar:
- 标题和副标题。标题应该是工具栏在导航层次结构中的当前位置以及其中包含的内容的路标。字幕(如果存在)应指示有关当前内容的任何扩展信息。 如果应用使用徽标图片,则应强烈考虑省略标题和副标题。
在现代Android UI中,开发人员应该更多地依赖于工具栏的视觉上不同的颜色方案而不是应用程序图标。 不鼓励在API 21设备和更新版本上使用应用程序图标和标题作为标准布局。
但是,如果您需要应用程序图标,setLogo()是正确的方法。
答案 1 :(得分:25)
使用以下代码更新onCreate()方法。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
setContentView(R.layout.activity_main);
}
它对我有用。 注意:ic_launcher是您要在操作栏中显示的图标,因为您必须在应用项目的drawable文件夹中添加该图标。
答案 2 :(得分:8)
IN Style.xml
-drawRect:
在活动中添加此内容并尝试
<style name="MyTheme_ActionBar" parent="@style/Theme.AppCompat.Light">
<item name="icon">@drawable/actionbar_logo</item>
</style>
答案 3 :(得分:3)
如果您不关心Material主题,并且没有一个看起来更像JellyBean / Kitkat样式的Activity并且在Action Bar中包含图标,那么您可以执行以下操作:
首先,从以下位置更改styles.xml中的主题设置:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
对此:
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
现在将所有活动更改为继承自android.app.Activity而不是android.support.v7.app.ActionBarActivity。那就是:
改变这个:
import android.support.v7.app.ActionBarActivity;
public class MainActivity extends ActionBarActivity{
对此:
import android.app.Activity;
public class MainActivity extends Activity {
执行上述两个步骤的结果是,AndroidManifest.xml中android:icon属性指定的图标将显示在操作栏中。
答案 4 :(得分:1)
它确实有效。试试这个.. 将这些行包含在onCreate方法中,
ActionBar menu = getSupportActionBar();
menu.setDisplayShowHomeEnabled(true);
menu.setIcon(R.mipmap.jerry);
另外,请确保jerry是mipmap文件夹下的.png图像文件。要在操作栏的开头准确显示图标,请在mipmap文件夹中包含所有屏幕尺寸的jerry文件,如(hdpi,mdpi,xhdpi,xxhdpi,xxxhdpi等)。
答案 5 :(得分:0)
在操作栏上显示图标可以轻松欺骗任何遇到问题的开发人员。 请记住这个简单的方法,它永远不会让你遇到麻烦。
如果您的activity
正在扩展活动,
getActionBar().setDisplayShowHomeEnabled(true);
如果您的activity
正在扩展 AppCompatActivity ,
ActionBar actionBar= getSupportActionBar();
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);
它始终适用于我们,将其保留在 Mind 中。