Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách kiểm soát chiều cao và rộng của Alert Dialog mặc định trong Android

Giới thiệu

Ví dụ này minh họa cách tùy chỉnh kích thước (chiều rộng và cao) của AlertDialog mặc định sau khi hiển thị bằng WindowManager.LayoutParams.

Các bước thực hiện

Bước 1: Tạo dự án mới

Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.

Bước 2: Layout (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/relativeLayout"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hiển thị Alert Dialog"
        android:layout_centerInParent="true" />
</RelativeLayout>

Bước 3: Code tùy chỉnh kích thước (MainActivity.java)

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.RelativeLayout;

public class MainActivity extends AppCompatActivity {
    Button button;
    RelativeLayout relativeLayout;
    Context context;
    Activity myActivity;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        relativeLayout = findViewById(R.id.relativeLayout);
        context = getApplicationContext();
        button = findViewById(R.id.button);
        myActivity = MainActivity.this;
        
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(myActivity);
                builder.setTitle("My Action Bar");
                builder.setMessage("This is my custom Action bar, do you like it?");
                builder.setPositiveButton("Yes", null);
                builder.setNegativeButton("No", null);
                
                AlertDialog alertDialog = builder.create();
                alertDialog.show();
                
                // Quan trọng: Phải gọi sau alertDialog.show()
                WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
                layoutParams.copyFrom(alertDialog.getWindow().getAttributes());
                layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
                layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
                alertDialog.getWindow().setAttributes(layoutParams);
            }
        });
    }
}

Bước 4: Manifest (AndroidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Chạy ứng dụng

Kết nối thiết bị, nhấn Run. Nhấn nút để xem AlertDialog mở rộng toàn màn hình.

Cách kiểm soát chiều cao và rộng của Alert Dialog mặc định trong Android

Cách kiểm soát chiều cao và rộng của Alert Dialog mặc định trong Android

Cách kiểm soát chiều cao và rộng của Alert Dialog mặc định trong Android

Lưu ý: Phải gọi alertDialog.show() trước khi truy cập getWindow(), nếu không sẽ bị NullPointerException.