自定义 alertDialog

来源:互联网 发布:matlab读取txt到矩阵 编辑:程序博客网 时间:2024/05/16 18:52


列表layout

linearlayout.xml<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle">    <solid android:color="#ffffff"></solid>    <padding android:left="1dp"        android:top="1dp"        android:right="1dp"        android:bottom="1dp" />    <corners android:radius="4dp" />   <stroke android:width="1dip"   android:color="#c0c0c0"></stroke></shape>

top_linearlayout.xml<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle">    <solid android:color="#1C86EE"></solid>    <padding android:left="0dp"        android:top="0dp"        android:right="0dp"        android:bottom="0dp" />    <corners         android:radius="4dp"         /></shape>

head.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >  <LinearLayout android:layout_width="100dip"      android:id="@+id/mainDlgLinearLayout"      android:orientation="vertical"      android:background="@drawable/linearlayout"      android:padding="1dip"      android:layout_height="185dip">      <LinearLayout android:layout_width="fill_parent"          android:background="@drawable/top_linearlayout"          android:paddingTop="5dip"          android:layout_height="30dip">          <LinearLayout               android:layout_width="fill_parent"              android:layout_height="fill_parent"              android:paddingBottom="5dip"              android:gravity="center_vertical"              android:background="#1C86EE">                    <TextView android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:text="nihaoya"          android:id="@+id/nameTextView"          android:paddingLeft="20dip"/>          </LinearLayout>      </LinearLayout>      <LinearLayout android:layout_width="fill_parent"          android:id="@+id/listLinearLayout"          android:layout_height="fill_parent">          <ListView               android:layout_width="fill_parent"              android:divider="#c0c0c0"              android:cacheColorHint="#ffffff"              android:layout_height="fill_parent"              android:dividerHeight="0.5dip"              android:id="@+id/mylist" ></ListView>      </LinearLayout>  </LinearLayout>  </LinearLayout>

SelectDialog类

package com.lin.dialog;import android.app.AlertDialog;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup.LayoutParams;import android.widget.LinearLayout;import android.widget.ListAdapter;import android.widget.ListView;public class SelectDialog {private AlertDialog dialog;private ListView  listView;private LinearLayout mainDlgLinearLayout;private LinearLayout listLinearLayout;public SelectDialog(Context context){    dialog= new AlertDialog.Builder(context).create();dialog.show();LayoutInflater inflater=LayoutInflater.from(context);View view=inflater.inflate(R.layout.head,null);        dialog.getWindow().setContentView(view);        listView=(ListView)view.findViewById(R.id.mylist);        mainDlgLinearLayout=(LinearLayout)view.findViewById(R.id.mainDlgLinearLayout);        listLinearLayout=(LinearLayout)view.findViewById(R.id.listLinearLayout);}/** * 绑定适配器 */public SelectDialog setAdapter(ListAdapter adapter,float radio,int width){System.out.println("radio=="+radio);int count=adapter.getCount();LayoutParams  params=mainDlgLinearLayout.getLayoutParams();params.width=(int) (width*radio);params.height=(int)((count+1)*(30+1)*radio);mainDlgLinearLayout.setLayoutParams(params);params=listLinearLayout.getLayoutParams();params.width=(int) (width*radio);params.height=(int)(count*(30+1)*radio);listLinearLayout.setLayoutParams(params);System.out.println(params.width);System.out.println(params.height);listView.setAdapter(adapter);return this;}}


MainActivity,

package com.lin.dialog;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup.LayoutParams;import android.widget.Button;import android.widget.ListView;import com.lin.adapter.DialogAdapter;public class AlertDialogActivity extends Activity {    /** Called when the activity is first created. */private Button openDlg;private float radio;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        openDlg=(Button)this.findViewById(R.id.openDlgBtn);        openDlg.setOnClickListener(buttonListener);         radio=getResources().getDisplayMetrics().density;//像素密度                    }    View.OnClickListener buttonListener=new View.OnClickListener(){@Overridepublic void onClick(View v) {List<String> mylist=new ArrayList<String>();for(int i=0;i<5;i++){mylist.add("nihao ya ");}DialogAdapter adapter=new DialogAdapter(mylist,AlertDialogActivity.this);SelectDialog dialog=new SelectDialog(AlertDialogActivity.this);dialog.setAdapter(adapter,radio,150); //第三个参数为屏幕宽度//showDialog(DIALOG);}    };    }