列表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(){
@Override
public 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);
}
};
}