Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android自定義對話框,android自定義

Android自定義對話框,android自定義

編輯:關於android開發

Android自定義對話框,android自定義


在android中有自帶的對話框,為了美觀,很多開發者會使用自定義對話框,如下圖:

點擊“彈出自定義對話框按鈕後”顯示如圖效果。

首先要自己定義一個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:background="@drawable/background"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:orientation="horizontal" >

        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/airsign" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="3"
            android:gravity="center"
            android:text="請輸入密碼"
            android:textColor="#FFFFFFFF"
            android:textSize="32px"
            android:text />
    </LinearLayout>

    <EditText
       android:id="@+id/et_pass"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:background="@drawable/tv_background"
        android:paddingLeft="10dp"/>

    <LinearLayout
         android:layout_marginTop="10dp"
         android:layout_marginBottom="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <Button
            android:id="@+id/btn_ok"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            
            android:layout_weight="1"
            android:background="@drawable/background"
            android:textColor="#FFFFFFFF"
            android:text="確定"/>
        <Button
            android:id="@+id/btn_delete"
            android:layout_marginLeft="20dp"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            
            android:layout_weight="1"
            android:textColor="#FFFFFFFF"
            android:background="@drawable/background"
            android:text="取消"/>
    </LinearLayout>
</LinearLayout>

 

mainActivity中:

public class MainActivity extends Activity {
    private Context context = MainActivity.this;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void clickView(View v) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        // 創建對話框
        AlertDialog dialog = builder.create();
        // 沒有下面這句代碼會導致自定義對話框還存在原有的背景
        builder.setView(View.inflate(this, R.layout.auto_dialog, null));
        // 彈出對話框
        dialog.show();
        // 以下兩行代碼是對話框的EditText點擊後不能顯示輸入法的
        dialog.getWindow().clearFlags(
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                        | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
        dialog.getWindow().setSoftInputMode(
                WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
        // *** 主要就是在這裡實現這種效果的.
        // 設置窗口的內容頁面,shrew_exit_dialog.xml文件中定義view內容
        Window window = dialog.getWindow();
        window.setContentView(R.layout.auto_dialog);
        EditText et_pass = (EditText) window.findViewById(R.id.et_pass);
        final Button btn_ok = (Button) window.findViewById(R.id.btn_ok);
        final Button btn_delete = (Button) window.findViewById(R.id.btn_delete);
        // 為兩個button按鈕添加點擊的監聽事件
        btn_ok.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Toast.makeText(context, btn_ok.getText(), 0).show();
            }
        });
        btn_delete.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Toast.makeText(context, btn_delete.getText(), 0).show();
            }
        });
    }
}

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved