选项卡在自定义布局膨胀时在操作栏上方显示

时间:2013-10-08 06:29:16

标签: android android-actionbar

我在所有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 个答案:

答案 0 :(得分:38)

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

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

答案 1 :(得分: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);

答案 2 :(得分:2)

getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME); 
        getActionBar().setDisplayUseLogoEnabled(true);
        getActionBar().setDisplayShowCustomEnabled(true);
        getActionBar().setCustomView(R.layout.actionbar_layout);

这对我有用。

答案 3 :(得分:1)

请尝试使用LayoutInflater对视图进行充气,然后将视图设置为操作栏。

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

来自this

  

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