16

我将android-support-library-v7-appcompat 添加到我的项目中,以支持上面 API 级别 7 的 ActionBar。

它在 android 4.0+ 和 android 2.3 上都像一个魅力,在 onCreate 中具有 setContentView 的普通 Activity,但是当 Activity 在 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();
    }
 }

此活动的主题在清单中设置为:

@style/Theme.AppCompat

这是 android 2.3 上的结果(在 4.0+ 上,ActionBar 显示良好) 动作条重叠

您可以设置第一个 lisview 项目与 ActionBar 重叠(白色圆形图标和标题“我的活动”)

我可能在支持库中发现了一个错误,它现在只发布了 2 天?谢谢大家。

4

4 回答 4

18

编辑: 现在正式修复并在支持库 v19中发布。

正如 JJD 在下面评论的那样,您可以正常使用android.R.id.contentappcompat-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,当您使用 support 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;
}

感谢弗雷德里克

于 2013-07-29T09:42:05.523 回答
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);
于 2013-08-09T05:24:56.647 回答
1

贡献似乎有点晚了,但我遇到了同样的问题,在这里没有看到答案....

检查您的 styles.xml 文件,可能有一个 xml 属性用于覆盖设置为 true 的操作栏,即

真的

整个条目看起来像这样

    <item name ="actionBarTabTextStyle" > @style/TabTextStyle</item>
    <item name = "windowActionBarOverlay">true</item>

如果是这种情况,那么只需将“windowActionBarOverlay”的值更改为 false。

于 2015-06-17T12:15:44.133 回答
0

添加一个带有操作栏大小的额外空列表标题。应该是一个很好的解决方法。

于 2013-07-28T15:21:25.967 回答