zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    JAVA THINGKING (二)随笔
    HP-UX磁带备份错误收集
    在cocos2d-x界面中嵌入Android的WebView
    PIMPL设计模式的理解和使用
    10453 Make Palindrome (dp)
    linux swap 分区调控(swap分区 lvm管理)
    如何让ios app支持32位和64位?
    数据持久化(二)存取沙箱文件
    [置顶] lvs-tun隧道模式搭建
    【D3.V3.js系列教程】--(十五)SVG基本图形绘制
  • 原文地址:https://www.cnblogs.com/lotusJade/p/4419706.html
Copyright © 2011-2022 走看看