我将 android-support-library-v7-appcompat 添加到我的项目中,以支持上面API API级别的ActionBar。
它就像android 4.0+上的魅力一样,也在android 2.3上有一个普通的Activity,在onCreate中有setContentView,但是当活动在onCreate中加载一个Fragment时,ActionBar会与我的布局内容重叠。在所有其他场景中,ActionBar运行良好。
以下是一些代码:
class AssetsActivity extends ActionBarActivity{
@Override
protected void onCreate(Bundle arg0)
{
super.onCreate(arg0);
OpenLocalFragment assets = OpenLocalFragment.newInstance(index);
assets.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, assets).commit();
}
}
此活动的主题在清单中设置为:
@风格/ Theme.AppCompat
这是android 2.3上的结果(4.0+以上,ActionBar显示效果不错)
你可以看到第一个lisview项目与ActionBar重叠(白色圆形图标和标题“我的活动”)
我可能在支持库中发现了一个错误,它现在只发布了2天? 谢谢大家。
答案 0 :(得分:18)
修改强> 现在已正式修复并在支持库v19 中发布。
正如JJD在下面评论的那样,你可以正常使用 android.R.id.content 和 appcompat-v7 r.19.0.0 或更新版本。主页按钮也可以。
换句话说:如果您使用的是19.0.0或更高版本,则不再需要下面的解决方法。
我在code.google.com得到了答案。我从弗雷德里克的回答中总结了一下:
对于预ICS设备,您必须使用:
R.id.action_bar_activity_content
而不是
android.R.id.content
R.id.action_bar_activity_content 是布局中用于显示应用内容的新ID,当您使用支持v7 appcompat ActionBarActivity时,它似乎会替换android.R.id.content。
您可以使用此代码检索活动内容的正确ID:
public static int getContentViewCompat() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH ?
android.R.id.content : R.id.action_bar_activity_content;
}
感谢frederic
答案 1 :(得分:1)
如果您不想修改 android-support-library-v7-appcompat 的源代码,另一种方法是在布局xml文件中添加一个空布局,例如:
<LinearLayout
android:id="@+id/content_view"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
并调用片段调用以添加到该布局:
ft.add(R.id.content_view, mFragment, mTag);
答案 2 :(得分:1)
似乎有点迟到了,但我遇到了同样的问题,并且没有在这里找到答案....
检查你的styles.xml文件,可能有一个xml属性用于将actionbar设置为true,即
真
整个条目看起来像这样
<item name ="actionBarTabTextStyle" > @style/TabTextStyle</item>
<item name = "windowActionBarOverlay">true</item>
如果是这种情况,那么只需更改&#34; windowActionBarOverlay&#34;的值。为假。
答案 3 :(得分:0)
添加一个额外的空列表标题,其中包含操作栏的大小。应该是一个很好的解决方法。