我在所有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);
答案 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_horizontal”。 应该这样做。