【发布时间】:2014-12-13 12:46:34
【问题描述】:
所以,我刚刚将我的代码库更新为 Lollipop,但我遇到了操作栏的问题。我正在使用 AppCompat 和 ActionBarActivity,并为自定义视图充气。好像自定义视图不再占据整个屏幕宽度,在左边留下一条细长条
以前的样子
现在的样子
这是我用来设置操作栏的代码。有人有什么想法吗?
final ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setCustomView(R.layout.action_bar_content_search_custom_view);
actionBar.setBackgroundDrawable(null);
// actionBar.setStackedBackgroundDrawable(null);
TextView title = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_title);
title.setText(R.string.youtube);
ImageView back = (ImageView) actionBar.getCustomView().findViewById(R.id.action_bar_back);
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
编辑
取出自定义视图并更改背景现在占据了整个宽度。那么问题来了,我们如何才能让 CustomView 占据整个 ActionBar 的宽度呢?
【问题讨论】:
-
如果暂时注释掉自定义视图部分,是不是表现更好?如果不是,我会倾向于这可能来自您的主题。
-
我删除了自定义视图,并将其背景设置为 ActionBar 的背景可绘制对象,并且背景现在确实占据了整个宽度
-
您可能会在层次视图中查看您的活动,无论是否使用自定义视图,看看您是否可以确定哪些布局规则会因自定义视图而发生变化。这可能是新的
appcompat-v7中的一个错误。 -
在我看来,这是为 up
ImageView保留的位置。尝试为初学者禁用它。 -
嗨,让自定义视图占据整个宽度似乎是一个很好的解决方案。即使设置了布局权重,我也遇到了它没有扩展的情况。看这里:stackoverflow.com/a/20794736/581574
标签: android android-actionbar android-appcompat android-5.0-lollipop