动作栏图标未启用为标题

8

如何在actionbarsherlock中使应用程序图标成为up enabled(不是仅限于标题图标),就像Whats App一样。

4个回答

18

自 Android 4.2.2 版本起,标题和图标可以同时点击。WhatsApp 使用自定义视图来显示两行标题,这会导致无法单独点击标题。您可以采用相同的方式:

ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(R.layout.ab_title);

TextView title = (TextView) findViewById(android.R.id.text1);
title.setText("Title");

/res/layout/ab_title.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="@style/TextAppearance.Sherlock.Widget.ActionBar.Title"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:ellipsize="end"
    android:gravity="center_vertical" />

完美的答案,谢谢。我一直很好奇为什么Nexus 4也使标题可点击。 - xLite
谢谢,运行得很好 - AAnkit

7
请在您的 onCreate 方法中添加以下内容:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

在您的活动中定义以下覆盖方法:

@Override
public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        onBackPressed();
        break;
    default:
        return super.onOptionsItemSelected(item);
    }
    return true;
}

4
但这也会使活动标题可点击。 - Ravi
你确定吗?因为在我的应用程序中它并没有这样做。 - waqaslam
2
onBackPressed() 是错误的!Home 按钮和返回按钮不同。使用 NavUtils.navigateUpFromSameTask(this) 代替。 - Eugen Pechanec

0

我认为这是 Android 版本/构建的“特性”,因为我有两个设备(Nexus S 和 Nexus 7)(Android 4.1.2 和 Android 4.2.2),我正在这两个设备上部署我正在开发的应用程序,使用完全相同的代码,在 Nexus S 上图标是“向上”的,而在 Nexus 7 上图标和标题都是“向上”的。


我能想到的一种方法是创建自己的自定义ActionBar布局/视图。假设这值得付出努力。 - LuckyMe

0

请确保您的android:minSdkVersion="11",这可以在清单文件中看到,APK 11已经包含了Up图标。将以下内容添加到您的onCreate方法中:对于主页,请使用getActionBar().setDisplayHomeAsUpEnabled(false); 确保它为false,在其他活动中保持启用,即“true”。我制作了一个小样本,请尝试下面的链接,它可能会帮助您将其导入到您的工作空间中

http://www.mediafire.com/?hktdvts7yyduwv1


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