在安卓中如何从操作栏中移除左箭头?

24

我想要从操作栏中移除左箭头,只需要图标和标题。

我的代码:

getSupportActionBar().setIcon(R.drawable.logo);
getSupportActionBar().setDisplayShowTitleEnabled(true);
getSupportActionBar().setTitle(R.string.dashboardtitle);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);

但是这并没有移除左箭头。有什么帮助吗!!


3
我本来以为 setDisplayHomeAsUpEnabled(false) 可以解决这个问题。你在自定义主题中有涉及到操作栏相关的内容吗? - CommonsWare
我只想从操作栏中删除左箭头。 - info
你正在使用哪个版本的Android SDK? - Borys
安卓4.2.2版本 - info
1
你使用ActionBar Sherlock还是原生Android ActionBar? - Borys
5个回答

26
根据Android规范,要启用向上导航图标(在图标旁显示“向上”指示器),请在您的ActionBar上调用setDisplayHomeAsUpEnabled(true):
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    ...
}

因此,您应该设置 actionBar.setDisplayHomeAsUpEnabled(false);

更新: 我使用ActionBar Sherlock测试了下面的代码,并且它起作用了。没有返回箭头:

getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar().setDisplayShowTitleEnabled(true);
getSupportActionBar().setTitle(R.string.about_event_location);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);

仍然有一小块黑色空间留下了。 - Maveňツ

22

你需要将这个添加到你的actionBar主题中。你可以用自己的图片替换箭头图像,这个图片可以是透明的。

<item name="android:homeAsUpIndicator">@drawable/action_arrow</item>

4
这个方法有效!我需要将新的可绘制对象设置为某个宽度的透明图片,因为使用 @android:color/transparent 不会在应用程序图标左侧包含任何填充。 - user142162
可以使用@null来避免创建透明的图像资源。<item name="android:homeAsUpIndicator">@null</item> - Guilherme Muniz

3
getActionBar().setHomeAsUpIndicator(R.drawable.action_arrow);

在这里,action_arrow是一个25x10像素的透明png图片。Sherlock的代码相同:

getSupportActionBar().setHomeAsUpIndicator(R.drawable.action_arrow);

1

@vivek: 好用。我不建议使用@android:color/transparent,因为标题对齐到左侧。所以使用一个空白图像更好。


5
这似乎更像一条评论,而不是一个答案。 - bummi

0
在 AndroidManifest.xml 文件中,
删除以下代码,这将从您的 ActionBar 中移除返回按钮。
android:parentActivityName=".Main.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".Main.MainActivity" />

就保持以下这样:

<activity
android:name=".YourActivity"
android:label="@string/your_activity_label">
</activity>

我遇到了丑陋的后退箭头问题,正是因为我不得不添加android:parentActivityName属性才能构建正确的返回堆栈!你的解决方案也可能会破坏系统返回按钮的预期行为。 - Pat Lee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接