fragmentactivity跳到fragment怎么设置状态栏

提示:讲解的该例实现是 FragmentTabHost + Fragment 实现:
1.示例效果图:
2.场景需求:
  如示例图所示,在首页实现轮播图的沉浸,而 “发现” 和“我的”页是标题的沉浸。
3.实现思路:
  (1) 使Activity状态栏透明,并且让布局进入到状态栏后面(style 要求是NoActionBar,在清单文件中配置即可)
  (2)对不同样式需求的Fragment,进行不同的操作
     样例中只有轮播图和文字标题两种样式:
       ①轮播图:实现(1),就可以实现效果
       ②文字标题:可代码获取屏幕宽度以及状态栏的高度,为文字标题的根部局动态添加一个和状态栏大小一样的View就可以了,颜色就可以随意控制了。
4.编码实现:
  实现(1)思路:对Activity:在onCreate方法中,在setContentView()方法后调用以下方法:
* 沉浸式状态栏
private void initState() {
if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.KITKAT) { //透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //透明导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
  实现(2)思路:示例中对Fragment抽取父类BaseFragment中,成员变量 mStatusBarView 就是和状态栏大小一样的View,将其添加在根部局的第一个位置
public abstract class BaseFragment extends Fragment {
private ViewGroup mV
protected View mStatusBarV
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (mView == null) {
mView = (ViewGroup) inflater.inflate(getLayoutId(), container, false);
ViewGroup parent = (ViewGroup) mView.getParent();
if (parent != null) {
parent.removeView(mView);
ButterKnife.bind(this, mView);
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
addStatusBar();
private void addStatusBar() {
if (mStatusBarView == null) {
mStatusBarView = new View(getContext());
int screenWidth = getResources().getDisplayMetrics().widthP
int statusBarHeight = getStatusBarHeight(getActivity());
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(screenWidth, statusBarHeight);
mStatusBarView.setLayoutParams(params);
mStatusBarView.requestLayout();
if (mView != null)
mView.addView(mStatusBarView, 0);
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
public static int getStatusBarHeight(Activity activity) {
int statusBarHeight = 0;
if (activity != null) {
int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
statusBarHeight = activity.getResources().getDimensionPixelSize(resourceId);
return statusBarH
  这样对于每个子类Fragment对StatusBar就是可控的了,控制其显示与否,控制其颜色。
<span style="color: #. 细节调整:
  布局中部分控件或者子布局不想进入到状态栏后面,导致无法点击,则需要在该控件或者子布局中添加一个属性:android:fitsSystemWindows="true",下面代码中ImageView就是轮播图中那个信封按钮,不希望它被放置到状态栏后面
&ImageView
android:id="@+id/btn_message"
android:layout_width="50dp"
android:layout_height="65dp"
android:layout_alignParentRight="true"
android:layout_marginRight="15dp"
android:fitsSystemWindows="true"
android:src="@drawable/btn_message_selector" /&
&项目源码:
链接: & 密码: dj7v
阅读(...) 评论()问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
我的一个MainActivity中有5个fragment,其中一个fragment需求是无导航栏,状态栏需要和背景图片一致,如QQ中QQ空间界面,请问怎么实现呢?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
在Activity中可以用过修改Window的属性改变状态栏的展示样式,你这样的需求应该在切换到这个Fragment的时候把状态栏的显示方式也更改了。不过大部分手机切换状态栏都带有动画,最好不要在程序中频繁切换状态栏显示方式,而是把在所有的界面中使用相同的状态栏方式。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
activity设置成无导航栏,fragment去实现。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
仅仅有一个Fragment需要操作的话,和QQ空间一样了。是搞了个新的Activity设置成无导航栏。然后自己手动实现内容变更。
同步到新浪微博
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:FragmentActivity FragmentTabHost - 简书
FragmentActivity FragmentTabHost
FragmentActivity FragmentTabHost配合使用,可以实现类似微博微信一样的下方切换状态栏.类似如下:
布局如下,重点是设置tabhost,tabcontent两个组件.
&HomeTabHost
android:id="@android:id/tabhost"&
&LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" &
&FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" /&
android:layout_width="match_parent"
android:layout_height="1dip"
android:background="@color/home_tab_divider_backgound" /&
&TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="@dimen/home_tab_height"
android:background="@drawable/tw_list_pressed_holo" /&
&/LinearLayout&
&/.HomeTabHost&
代码中找到tabhost后,调用setup方法构建:
mHomeTabHost = (HomeTabHost) findViewById(android.R.id.tabhost);
mHomeTabHost.setup(this, getSupportFragmentManager(),android.R.id.tabcontent);
最后为tabhost添加子Fragment:
mHomeTabHost.addTab(mHomeTabHost.newTabSpec(mTabTag.get(i))
.setIndicator(view), mTabClassList.get(i),
savedInstanceState);
view为每个按钮(Indicator)的view,第二个参数为Fragment的类.Android 沉浸式状态栏Activity两个Fragment一个是导航是颜色一个是图片怎么设置 ? - 知乎3被浏览2903分享邀请回答0添加评论分享收藏感谢收起0添加评论分享收藏感谢收起

我要回帖

更多关于 activity添加fragment 的文章

 

随机推荐