现在的位置: 首页 > 综合 > 正文

定制Dialog(二)

2013年11月16日 ⁄ 综合 ⁄ 共 5294字 ⁄ 字号 评论关闭

具体的创建Dialog的内容参见 : http://developer.android.com/guide/topics/ui/dialogs.html

自己在创建AlertDialog的时候如何改变对话框的样式;

 对话框的效果图:

首先需要自己定义对话框的配置文件: 放在自己的应用程序的drawable-mdpi文件夹中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="400dip"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@drawable/popup_shadow_dailog">
    
    <TextView android:id="@+id/title_addoreidt" 
        android:gravity="center_vertical"
        android:background="@drawable/popup_top_dark" 
        android:paddingLeft="20px"
        android:layout_width="fill_parent" 
        android:layout_height="45px"
        android:layout_weight="1" 
        android:text="@string/save_to_bookmarks"
        android:textStyle="bold" 
        android:textSize="16px" 
        android:textColor="@color/white" />
    

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical"
        android:paddingTop="5dip"
        android:paddingBottom="13dip"
        android:paddingLeft="20dip"
        android:paddingRight="20dip" 
        android:background="@drawable/popup_bg_m">
    
        <TextView 
            android:id="@+id/titleText"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/name"
            android:gravity="left"
            android:textAppearance="?android:attr/textAppearanceMedium" />
                
        <EditText
            android:id="@+id/title"
            android:layout_height="wrap_content"
            android:layout_width="360dip"
            android:gravity="fill_horizontal"
            android:inputType="textCapSentences"
            android:selectAllOnFocus="true"
            android:textAppearance="?android:attr/textAppearanceMedium" />
                

    
        <TextView
            android:id="@+id/addressText"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/location"
            android:gravity="left"
            android:textAppearance="?android:attr/textAppearanceMedium" />
                
        <EditText
            android:id="@+id/address"
            android:layout_height="wrap_content"
            android:layout_width="360dip"
            android:hint="@string/http"
            android:gravity="fill_horizontal"
            android:inputType="textUri"
            android:selectAllOnFocus="true"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </LinearLayout>
        
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="50dip"
        android:minHeight="45dip"
        android:orientation="horizontal"
        >
        <Button android:id="@+id/OK" 
            android:text="@string/save"
            android:layout_width="0dip"
            android:layout_gravity="left"
            android:layout_weight="1"
            android:maxLines="2"
            android:layout_height="wrap_content"
            android:background="@drawable/popup_botton_left" />
        <Button android:id="@+id/cancel" 
            android:text="@string/do_not_save"
            android:layout_width="0dip"
            android:layout_gravity="right"
            android:layout_weight="1"
            android:maxLines="2"
            android:layout_height="wrap_content"
            android:background="@drawable/popup_botton_right" />
    </LinearLayout>

</LinearLayout>

定义button的配置文件:

left button:

<?xml version="1.0" encoding="UTF-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true"
        android:drawable="@drawable/popup_button_left_pressed" />

           
    <item 
        android:drawable="@drawable/popup_button_left" />

</selector>

right button:

<?xml version="1.0" encoding="UTF-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true"
        android:drawable="@drawable/popup_button_right_pressed" />

  
    <item 
        android:drawable="@drawable/popup_button_right" />

</selector>

放在应用的drawable文件夹中。

然后创建一个类 CustomDialog.java

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import com.android.browser.R;

public class CustomDialog extends Activity {
    private EditText    mTitle;
    private EditText    mAddress;
    private TextView    mButton;
    private View        mCancelButton;
    private boolean     mEditingExisting;
    private Bundle      mMap;
    private String      mTouchIconUrl;
    private Bitmap      mThumbnail;
    private String      mOriginalUrl;
    private TextView 	mAdd;


    private Handler mHandler;

    private View.OnClickListener mSaveBookmark = new View.OnClickListener() {
        public void onClick(View v) {
           
        }
    };

    private View.OnClickListener mCancel = new View.OnClickListener() {
        public void onClick(View v) {
            
        }
    };

    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);       
        setContentView(R.layout.browser_add_bookmark);        
        mAdd = (TextView) findViewById(R.id.title_addoreidt);
        mTitle = (EditText) findViewById(R.id.title);
        mAddress = (EditText) findViewById(R.id.address);
        View.OnClickListener accept = mSaveBookmark;
        mButton = (TextView) findViewById(R.id.OK);
        mButton.setOnClickListener(accept);
        mCancelButton = findViewById(R.id.cancel);
        mCancelButton.setOnClickListener(mCancel);
        
        if (!getWindow().getDecorView().isInTouchMode()) {
            mButton.requestFocus();
        }
        
        
  
    }
}

是一个Activity,还需要定义activity的样式:

在res/values/style.xml中添加下面的代码:

 <style name="CustomDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:textColor">@color/black</item>
    </style>

在AndroidMainfest.xml文件中 activity中使用activity的样式:

  <activity android:name="CustomDialog" android:label="Save bookmark" android:theme="@style/CustomDialog" 
                  android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden">
            <intent-filter>
                <action android:name="android.intent.action.INSERT" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.dir/bookmark"/>
            </intent-filter>
        </activity>

OK,Dialog定制完成。

抱歉!评论已关闭.