Android 开发经验-Fragment相关

dialogfragment 

问题背景:

一般app开发都会遇到弹窗的需求,但是dialogfragment默认的style是带标题栏的,但这又经常是我们不需要的,于是,我们可以设置dialogfragment的style

1 @Override
2 public void onCreate(Bundle savedInstanceState) {
3     super.onCreate(savedInstanceState);
4     setStyle(DialogFragment.STYLE_NO_TITLE, 0);
5 }

但是这样设置之后,你会发现,dialog的高度和宽度并不是你想要的,你怎么设置根view的高度和宽度都无济于事,此时android系统是忽略根view的高度和宽度的,

所以我采取的一个取巧的方法是,根view设置成RelativeLayout或者FrameLayout,然后第一个view为Space或者View,这个view设置成你要的宽度和高度,如下

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5 
 6     <Space
 7         android:layout_width="wrap_content"
 8         android:layout_height="wrap_content"
 9         android:minHeight="248.5dp"
10         android:minWidth="250dp" />
11 
12     <LinearLayout
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:gravity="center"
16         android:orientation="vertical"
17         android:paddingBottom="39dp"
18         android:paddingLeft="20dp"
19         android:paddingRight="20dp"
20         android:paddingTop="30dp" >
21 
22     </LinearLayout>
23 
24 </RelativeLayout>

 

问题背景:

  有时候我们需要用到嵌套fragment,但是嵌套fragment的使用有一个限制,即只能通过代码动态的添加,不能通过在xml中添加,官网是这么解释的,

  Note: You cannot inflate a layout into a fragment when that layout includes a <fragment>. Nested fragments are only supported when added to a fragment dynamically.

  这样带来的问题是,如果fragment的container view是LinearLayout,如果设置fragment之间的margin呢?

解决方案:

  我的方法是,在子fragment的onstart或着onresume方法中,将view的margin设置上,但是这需要判断当前的fragment是container的第几个child。

 

posted @ 2015-04-12 15:53  lotusJade  阅读(183)  评论(0编辑  收藏  举报