自定義佈局文件
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="fill_parent" android:layout_width="fill_parent"
- >
- <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content"
- android:background="@drawable/popup_title" android:id="@+id/about_us_rel01">
- <TextView android:id="@+id/about_us_title" android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="關於我們" android:layout_marginLeft="20dip" android:textSize="20dip"/>
- </RelativeLayout>
- <RelativeLayout android:layout_height="wrap_content"android:layout_below="@+id/about_us_rel01"
- android:background="@drawable/popup_bg" android:id="@+id/about_us_rel02"
- android:layout_width="fill_parent" android:gravity="center" >
- <ListView android:id="@+id/test_alertdialog_listview"
- android:layout_height="wrap_content" android:layout_width="wrap_content"
- ></ListView>
- </RelativeLayout>
- </RelativeLayout>
- java代碼
- final String[] datas ={"data1","data2"};
- LayoutInflater inflater = this.getLayoutInflater();
- View view = inflater.inflate(R.layout.test_alertdialog_listview,null);
- ListView lv = (ListView)view.findViewById(R.id.test_alertdialog_listview);
- lv.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1,datas));
- lv.setOnItemClickListener(new OnItemClickListener(){
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- alertdialog.dismiss();
- Toast.makeText(TestAndroid.this, datas[position], Toast.LENGTH_LONG).show();
- }
- });
- alertdialog = new AlertDialog.Builder(this)
- // .setView(view);
- .setItems(datas, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- }
- })
- .create();
- // 在此使用setview方法可以設置佈局文件和alertdialog四周邊框的距離,可以消除黑邊框
- alertdialog.setView(view, 0, 0, 0, 0);
- alertdialog.show();
此外,我們還可以通過設置dialog的樣式來定義,消除邊框
使用樣式文件,在values 目錄下新建styles.xml文件,編寫如下代碼:
- <resources>
- <style name="dialog" parent="@android:style/Theme.Dialog">
- <item name="android:windowFrame">@null</item>
- <item name="android:windowIsFloating">true</item>
- <item name="android:windowIsTranslucent">false</item>
- <item name="android:windowNoTitle">true</item>
- <item name="android:background">@android:color/black</item>
- <item name="android:windowBackground">@null</item>
- <item name="android:backgroundDimEnabled">false</item>
- </style>
- </resources>
調用時,使用AlerDialog的接口類,Dialog 接口編寫如下代碼:
- Dialog dialog =
- Dialog(SetActivity.this, R.style.dialog);
- dialog.setContentView(R.layout.test);
- dialog.show();
下面我們查看一下Dialog的源碼文件,裏面的構造函數爲如下:
- public Dialog(Context context, int theme) {
- mContext =new ContextThemeWrapper(context, theme ==0? com.android.internal.R.style.Theme_Dialog : theme);
- mWindowManager = (WindowManager)context.getSystemService("window");
- Window w = PolicyManager.makeNewWindow(mContext);
- mWindow = w;
- w.setCallback(this);
- w.setWindowManager(mWindowManager, null, null);
- w.setGravity(Gravity.CENTER);
- mUiThread = Thread.currentThread();
- mDismissCancelHandler =
- new DismissCancelHandler(this);
- }
這裏面我們可以看出,Android 使用了默認的構造函數爲Dialog 設置樣式,如果沒有爲其設置樣式,即默認加載事先編寫好的樣式文件,Dialog 一共由多個9.png的圖片構成,大部分都是帶有邊框的9.png圖片,所以就是爲什麼我們上邊的樣式文件要將其背景去除掉。這個東西搞了我好久,希望對你有幫助