第四章的学习了,感觉碎片有点难,慢慢码代码。
布局中添加碎片
新建两个布局文件,left_fragment.xml和right_fragment.xml
线性布局,不用特别设置,
新建两个继承Fragment的类
另一个类类似以下代码
public class LeftFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.left_fragment, container, false); return view; } }
|
修改activity_main.xml代码
注意为相对布局
<fragment android:id="@+id/left_fragment" android:name="com.example.test.LeftFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <fragment android:id="@+id/right_fragment" android:name="com.example.test.RightFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" />
|
动态加载碎片
新建一个碎片
新建一个another_right_fragment.xml和AnotherRightFragment类作为另一个右侧碎片
代码类似LeftFragment
修改activity_main.xml代码
将右侧碎片放在了一个FrameLayout中
<FrameLayout android:id="@+id/right_layout" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" > <fragment android:id="@+id/right_fragment" android:name="com.example.test.RightFragment" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout>
|
在按钮中添加事件
1.创建待添加的碎片实例。
2.获取到FragmentManager,直接调用getFragmentManager()方法可以得到
3.开启一个事务,通过beginTransaction()方法开启。
4.向容器内加入碎片,一般通过replace()方法实现,需要传入容器的id和待添加的碎片实例。
5.提交事务,调用commit()方法来完成。
AnotherRightFragment fragment = new AnotherRightFragment(); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager .beginTransaction(); transaction.replace(R.id.right_layout, fragment); transaction.addToBackStack(null); transaction.commit();
|
碎片事件
1.运行状态
2.暂停状态
3.停止状态
4.销毁状态
动态加载布局的技巧
使用限定符
修改layout文件夹下面的activty_main.xml文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/left_fragment" android:name="com.example.test.LeftFragment" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
|
在res文件夹下新建一个layout-large文件夹
新建一个布局,也是activty_main.xml文件。这个文件就会适配平板等大屏幕
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/left_fragment" android:name="com.example.test.LeftFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <fragment android:id="@+id/right_fragment" android:name="com.example.test.RightFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="3" /> </LinearLayout>
|
可以依照其他限定符,small,normal,large,xlarge,也可以使用最小宽度限定符。layout-sw600dp