哈囉大家早安,終於來到鐵人賽的第六天,
我們今天要繼續練習DialogFragment,
不過是一個很簡單的範例,一下子就能學會啦~
繼昨天練習的DialogFragment,
我們知道它就是一個可以浮動在Activity之上的框架(畫重點筆記)
昨天我們是利用它,回傳一個AlertDialog在上面,
那今天我想要自訂一個Layout在上面可不可以啊?
答案是,喔福扣兒史~~當然可以!
所以我們今天要做一個浮動的Layout在Activity上面,
就像這樣
好的,那就開始練習今天的範例囉
Step1. 建立MainActivity、activity_main.xml
這個MainActivity是一個程式的出入口,記得建立完之後,要在AndroidManifest.xml設定權限唷,這邊我就不再贅述啦
Step2. 建立一個浮動方塊的Layout
我們要在layout資料夾中,建立一個fragment_mydialog.xml的Layout,
它就是浮在Activity上的方塊,在裡面放一個TextView就OK了
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Step3. 建立DialogFragment
我們要建立一個繼承DialogFragment的MyDialogFragment,來控制剛剛fragment_mydialog.xml的TextView內容,這邊要記得把
Layout中的標題取消掉(不然整個方塊會變得很好笑)
public class MyDialogFragment extends DialogFragment {
static MyDialogFragment newInstance() {
return new MyDialogFragment();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
setStyle(STYLE_NO_TITLE, 0); //把Layout中的標題設為不顯示
return super.onCreateDialog(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_mydialog, container, false);
View tv = v.findViewById(R.id.text);
((TextView) tv).setText("這是一個MyDialogFragment的實例");
return v;
}
}
那今天的練習就到這邊,我們明天見~
希望大家都有清楚了解DialogFragment的用法囉!
以上內容皆參考官方文件:http://developer.android.com/reference/android/app/DialogFragment.html