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

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

Solutions Collecting From Web of "膨胀自定义布局时,上面的选项卡将显示在操作栏上"

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