24

上部と下部のスペースを除いて、ダイアログを画面いっぱいに表示する必要があります。私は解決策を探しましたが、おそらく.で宣言しているため、解決策が見つかりませんでしたonClickListener. 誰かが解決策を教えてください。

活動コード:

sort.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                AlertDialog.Builder sort = new AlertDialog.Builder(HomeScreen.this);
                // Get the layout inflater
                LayoutInflater inflater = HomeScreen.this.getLayoutInflater();
                View sortView = inflater.inflate(R.layout.sort_layout, null);
                sort.setView(sortView);
                sort.create().show();
            }
        });

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:layout_marginBottom="50dp"
    android:layout_marginTop="50dp"
    android:background="@color/white"
    android:orientation="vertical" android:layout_gravity="center">
    + some more stuff here I dont think it's relevant
</LinearLayout>

ここに画像の説明を入力

4

8 に答える 8

43

ここで、画面の幅と幅をダイアログに設定します

WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
    lp.copyFrom(dialog.getWindow().getAttributes());
    lp.width = width;
    lp.height = height;
    dialog.getWindow().setAttributes(lp);

またはあなたのスタイルでこのようなスタイルを作成してください

 <style name="DialogTheme" parent="android:Theme.Dialog">

    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">fill_parent</item>


    <!-- No backgrounds, titles or window float -->
    <item name="android:windowBackground">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">false</item>
</style>

このようなダイアログオブジェクトを作成します

dialog = new Dialog(this, R.style.DialogTheme);

編集 ::

塗りつぶすデバイスの幅と高さをこのように取得します..

WindowManager manager = (WindowManager) getSystemService(Activity.WINDOW_SERVICE);
    int width, height;
    LayoutParams params;

    if (Build.VERSION.SDK_INT > VERSION_CODES.FROYO) {
        width = manager.getDefaultDisplay().getWidth();
        height = manager.getDefaultDisplay().getHeight();
    } else {
        Point point = new Point();
        manager.getDefaultDisplay().getSize(point);
        width = point.x;
        height = point.y;
    }
于 2013-08-19T13:51:25.703 に答える
4

これは誰かにとって役立つかもしれません。ダイアログが画面の全幅を占めるようにしたい。たくさん検索しましたが、何も役に立ちませんでした。最後に、これは私のために働いた:

mDialog.setContentView(R.layout.my_custom_dialog);
mDialog.getWindow().setBackgroundDrawable(null);

これを追加した後、私のダイアログは画面の全幅に表示されます。

于 2015-08-24T07:50:58.677 に答える
4

これを試して

Theme.Dialog スタイルが設定されているアクティビティでは、次のようにします。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.your_layout);

    getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
}
于 2013-08-19T13:56:39.757 に答える
1

私はあなたがこれを試してみるべきだと思います:

dialogFragment内:

@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
        }
于 2016-09-27T14:17:13.183 に答える