16

我在 Stackoverflow 的所有其他答案中都尝试了这里提到的所有内容,但没有成功。这是我的代码。

actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#ffffff")));
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(R.layout.actionbar_layout);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setLogo(null);
actionBar.setDisplayShowTitleEnabled(false);
View homeIcon = findViewById(android.R.id.home);
((View) homeIcon.getParent()).setVisibility(View.GONE);
4

4 回答 4

38

当您隐藏 Home 项目时,选项卡会显示在顶部。这有点违反直觉,但也具有一定的设计意义。它们本质上是在推动您使用选项卡作为部分的标题,并使用它们下方的操作栏来执行这些部分内的操作。

您需要setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME)再次拉下标签。它也可能需要一个非空徽标(您可以在 -nodpi 中制作一个 1px 透明的徽标以使其消失)

于 2013-10-08T07:21:25.483 回答
4

使用接受的解决方案会在 上留下一个左填充actionbar,这会缩小您的自定义视图。

onCreate解决方案是在以下代码中添加此代码Activity

        View homeIcon = findViewById(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? android.R.id.home : R.id.abs__home);
        ((View) homeIcon.getParent()).setLayoutParams(new LinearLayout.LayoutParams(0, 0));
        ((View) homeIcon).setVisibility(View.GONE);
于 2015-03-04T15:08:49.930 回答
2
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME); 
        getActionBar().setDisplayUseLogoEnabled(true);
        getActionBar().setDisplayShowCustomEnabled(true);
        getActionBar().setCustomView(R.layout.actionbar_layout);

这对我有用。

于 2014-04-09T11:50:25.567 回答
1

请尝试使用LayoutInflater膨胀视图然后将视图设置为操作栏。

    LayoutInflater inflator = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflator.inflate(R.layout.layout, null);
    actionBar.setCustomView(v);

由此

使用 RelativeLayout 而不是 LinearLayout 作为主容器。为它设置 android:layout_gravity="fill_horizo​​ntal" 很重要。那应该这样做。

于 2013-10-08T07:00:44.740 回答