Android的DialogFragment的简单使用。

本文介绍如何使用 Android DialogFragment 创建自定义对话框,并通过 SimpleAdapter 填充 ListView 数据,展示了 DialogFragment 的尺寸调整和透明度设置方法。

先看文章
Android ListView入门知识–各种Adapter配合使用
Android–>Dialog/DialogFragment宽度高度修改/全屏,自定义样式
Android 自定义 DialogFragment 宽度问题
[Android]ListView中分割线的设置
(转)Android 开发 对话框Dialog dismiss和hide方法的区别
Android ListView 除去边缘阴影、选中色、拖动、底部上拉、顶部下拉背景色等
Android Dialog 系统样式讲解及透明背景

看看activity_main.xml 点击弹出dialog

<?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:padding ="10dp" >
    <Button
        android:id ="@+id/button1"
        android:layout_width ="match_parent"
        android:layout_height ="wrap_content"
        android:text ="点击"
         />
</LinearLayout>

dialog_fragment.xml 实现listview布局

<?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:layout_marginLeft ="5dp"
    android:layout_marginRight ="5dp"
    android:layout_centerVertical="true"
    >
    <ListView
        android:id ="@+id/list"
        android:scrollbars="none"
        android:layout_width ="match_parent"
        android:layout_height ="match_parent"
        android:divider="#dddddd"
        android:fadingEdge="none"
        android:background="@drawable/btn"
        android:overScrollMode="never"
        android:dividerHeight="2dp"
        />
</LinearLayout>

listitem.xml 每个子项的布局

<?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="horizontal">

    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:src="@mipmap/ic_launcher"
        />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="22sp"
            android:text="@string/app_name"
            />

        <TextView
            android:id="@+id/info"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="13sp"
            android:text="@string/app_name"/>

    </LinearLayout>

</LinearLayout>

MyDialogFragment,写一个dialogfragment。SimpleAdapter填入数据。

public class MyDialogFragment extends DialogFragment implements
        OnItemClickListener {
    private ListView mylist;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.dialog_fragment, null, false);
        mylist = ( ListView ) view.findViewById(R.id.list);
              getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);//去掉dialog的标题  
 //透明度
WindowManager.LayoutParams   lp=getDialog().getWindow().getAttributes();
        lp.alpha=0.8f;
        getDialog().getWindow().setAttributes(lp);
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        SimpleAdapter adapter = new SimpleAdapter(getActivity(),getData(),R.layout.listitem,
                new String[]{"title","info","img"},
                new int[]{R.id.title,R.id.info,R.id.img});
        mylist.setAdapter(adapter);
        mylist.setOnItemClickListener( this );
    }
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
                            long id) {
//        dismiss();

    }
// 重写onstart方法
    @Override
    public void onStart() {
        super.onStart();
        Dialog dialog = getDialog();
        if (dialog != null) {
            DisplayMetrics dm = new DisplayMetrics();
            getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
//  设置dialog的高度和宽度
            dialog.getWindow().setLayout((int) (dm.widthPixels * 0.9), (int) (dm.heightPixels * 0.75));
        }
    }
    private List<Map<String, Object>> getData() {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

        Map<String, Object> map = new HashMap<String, Object>();

        map = new HashMap<String, Object>();
        map.put("title", "不可能的梦");
        map.put("info", "别只顾着吃");
        map.put("img",R.mipmap.a);
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("title", "好想你想");
        map.put("info", "厉害了");
        map.put("img", R.mipmap.a);
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("title", "有你正好");
        map.put("info", "下班回家,买菜做饭");
        map.put("img", R.mipmap.tu);
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("title", "勇敢的心");
        map.put("info", "今天天气不错");
        map.put("img",R.mipmap.w);
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("title", "就知道你不会相信");
        map.put("info", "别打扰我!");
        map.put("img", R.mipmap.a);
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("title", "梦见蝴蝶");
        map.put("info", "老...老板,来..来一碗面。");
        map.put("img",R.mipmap.w);
        list.add(map);
        return list;
    }
}

MainActivity,点击按钮弹出dialog。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super .onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showDialog(view);
            }
        });
    }
    public void showDialog(View view) {
        FragmentManager manager = getFragmentManager();
        MyDialogFragment dialog = new MyDialogFragment();
        //dialog.show(manager, "dialog");参数为 :一个布局,字符串(可以为空)。
        dialog.show(manager,"");
    }
}

完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值