0

ここに画像の説明を入力ダイアログをフルスクリーンで開く必要がある画面がありますが、それは下部のタブバーの上にある必要があります。

ダイアログを画面全体に表示するために使用されるコードは次のとおりです。

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

しかし、このコードでは、画面全体にダイアログが表示され、下部のタブ バーが非表示になります。誰でもこれについて私を助けてもらえますか?

トリミングされた画像に示すように、全画面で下部のタブバーの上にダイアログが必要です。

4

2 に答える 2

1

これを試して、

onCreate 使用 [これにより画面の高さが得られます]:-

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int screenHeight = size.y;

onResume で使用 [これにより、タブバーの高さが得られます]

 ViewTreeObserver observer = tabBar.getViewTreeObserver();
        observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                int tabBarHeight= tabBar.getHeight();
            tabBar.getViewTreeObserver().removeGlobalOnLayoutListener(
                        this);
            }
        });

ダイアログの高さについては、[screenHeight と tabBarHeight のクラス変数を作成] を使用します。

WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = screenHeight -tabBarHeight;
dialog.show();
dialog.getWindow().setAttributes(lp);
于 2017-01-05T14:35:03.957 に答える
0

カスタム ダイアログを作成するだけでダイアログを完全に制御したい場合、これは簡単です。カスタム ダイアログを使用するアクティビティには、XML ファイルとメソッドが必要です。以下に、XML とメソッドのコードを示します。新しい XML ファイル res を右クリック -> 新規 -> XML (下部近く) -> レイアウト XML ファイル

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_lightGray"
tools:context="com.example.dwight.pwkeeper.MainActivity">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="84dp"
    android:background="@color/color_darkGray"
    android:minHeight="?attr/actionBarSize">

    <ImageView
        android:id="@+id/imageTB"
        android:layout_width="70dp"
        android:layout_height="wrap_content"
        android:paddingBottom="2dp"
        android:paddingLeft="2dp"
        android:paddingRight="2dp"
        android:paddingTop="4dp"
        android:src="@drawable/lockgold" />

    <TextView
        android:text="@string/app_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/toolbar"
        android:layout_alignParentStart="true"
        android:layout_marginStart="30dp"
        android:layout_marginBottom="20dp"
        android:id="@+id/tvMA"
        android:textStyle="bold"
        android:textColor="@color/color_White"
        android:textSize="28sp" />

</android.support.v7.widget.Toolbar>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/toolbar"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:id="@+id/RLscreen">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password"
        android:layout_marginLeft="100dp"
        android:layout_marginTop="60dp"
        android:id="@+id/tvPW"
        android:textColor="@android:color/black"
        android:textStyle="bold"
        android:textSize="26sp"/>

    <EditText
        android:id="@+id/etPW"
        android:layout_width="260dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="220dp"
        android:layout_marginTop="50dp"
        android:backgroundTint="@color/color_Black"
        android:cursorVisible="true"
        android:ems="10"
        android:gravity="bottom"
        android:inputType="text"
        android:textColor="@android:color/black"
        android:textSize="26sp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Confirm Password"
        android:layout_marginTop="140dp"
        android:id="@+id/tvCPW"
        android:textColor="@android:color/black"
        android:textStyle="bold"
        android:textSize="26sp"/>

    <EditText
        android:id="@+id/etCPW"
        android:layout_width="260dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="220dp"
        android:layout_marginTop="130dp"
        android:backgroundTint="@color/color_Black"
        android:ems="10"
        android:inputType="text"
        android:textColor="@android:color/black"
        android:textSize="26sp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/btnSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="220dp"
        android:layout_marginTop="220dp"
        android:text="SAVE"
        android:textColor="@color/color_lightGray"
        android:textSize="30sp"
        android:textStyle="bold" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="220dp"
        android:layout_marginTop="220dp"
        android:id="@+id/btnEnter"
        android:textColor="@color/color_lightGray"
        android:textStyle="bold"
        android:textSize="30sp"
        android:visibility="invisible"
        android:onClick="onEnter"
        android:text="ENTER" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="false"
        android:layout_alignParentStart="false"
        android:layout_marginTop="350dp"
        android:src="@drawable/pwkeyb600" />

</RelativeLayout>

    private void doCustom(){
    /* This method uses the custom_dialog.xml file created for greater control over
       the styling of the Custom Alert Dialog for various screen sizes and to be
       able to set the text size of the dialog message text
     */

    final Dialog openDialog = new Dialog(context);
    openDialog.setContentView(R.layout.custom_dialog);
    Button btnYES = (Button)openDialog.findViewById(R.id.btnYES);
    Button btnNO = (Button)openDialog.findViewById(R.id.btnNO);

    // if YES delete Master Password from TABLE_MPW
    btnYES.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Write your code here to invoke YES event
            db = helper.getReadableDatabase();

            String q = "SELECT * FROM masterPW";
            Cursor cursor = db.rawQuery(q,null);
            // Above query gets TABLE_PW data from Col_IDI
            // TABLE_PW will only ever have one row of data

            int rowID = 99;
            if(cursor.moveToFirst()){
                rowID = cursor.getInt(cursor.getColumnIndex(Col_IDI));
                str = cursor.getString(cursor.getColumnIndex(Col_MPW));
            }
            cursor.close();

            // Line of code below WORKS deletes entire TABLE <=====
            // Not a recommended way to re-set the master password
            // db.delete(TABLE_PW, null, null);

            String num = Integer.toString(rowID);

            db.delete(TABLE_PW, Col_IDI + " = ?", new String[] { num });
            db.close();
            openDialog.dismiss();

            Intent intentYY = new Intent(DetailsActivity.this, MainActivity.class );
            startActivity( intentYY );

            Toast.makeText(getApplicationContext(), "Change the Password", Toast.LENGTH_SHORT).show();
        }
    });

    btnNO.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openDialog.dismiss();

            Intent intent = new Intent( DetailsActivity.this, ListActivity.class );
            startActivity( intent );

            Toast.makeText(getApplicationContext(), "Password NOT Changed", Toast.LENGTH_SHORT).show();
        }
    });

    openDialog.show();
}
于 2017-09-22T21:28:35.667 に答える