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。