Pri*_*990 16 android android-fragments android-actionbar android-support-library
我将android-support-library-v7-appcompat添加到我的项目中,以支持上面API级别7的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();
}
}
Run Code Online (Sandbox Code Playgroud)
此活动的主题在清单中设置为:
@风格/ Theme.AppCompat
这是android 2.3上的结果(在4.0+上,ActionBar显示得很好)
您可以看到第一个lisview项目与ActionBar重叠(白色圆形图标和标题"我的活动")
我可能在支持库中发现了一个错误,它现在只发布了2天?谢谢大家.
Pri*_*990 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,当您使用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;
}
Run Code Online (Sandbox Code Playgroud)
感谢弗雷德里克
归档时间: |
|
查看次数: |
16245 次 |
最近记录: |