膨胀自定义布局时,上面的选项卡将显示在操作栏上

我尝试了所有在这里提到的所有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); 

  • 带导航选项卡的ActionBar以屏幕方向改变高度
  • 如何隐藏片段的操作栏?
  • 如何关注操作栏中的可折叠操作视图EditText项(展开时)并强制打开软键盘?
  • 使用Android中的样式中心alignment操作栏中的标题。
  • 使用ActionBarSherlock仍然是必要的?
  • 删除图标,但在ActionBar中有HomeAsUp
  • 更改appcompat的SearchView文本和提示颜色
  • Android支持工具栏colorControlNormal颜色
  • 当您隐藏Home项目时,标签显示在最上面。 这是有点反直觉,但它也使一些devise感。 他们本质上是推动你使用标签作为标题的部分,并使用他们下面的动作栏在这些部分内的行动。

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

    使用接受的解决scheme在操作actionbar上留下一个左侧填充,这将缩小您的自定义视图。

    解决scheme是在ActivityonCreate中添加此代码:

      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); 
     getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME); getActionBar().setDisplayUseLogoEnabled(true); getActionBar().setDisplayShowCustomEnabled(true); getActionBar().setCustomView(R.layout.actionbar_layout); 

    这对我有效。

    请尝试使用LayoutInflaterLayoutInflater视图,然后将视图设置到操作栏。

      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”是很重要的。 这应该做到这一点。