我有一个屏幕,我需要全屏打开对话框,但它应该在底部标签栏上方。
用于使对话框在整个屏幕中显示的代码如下:
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);
但是这段代码为我提供了整个屏幕中隐藏底部标签栏的对话框。可以请任何人帮助我吗?
如裁剪图片所示,我希望全屏显示底部标签栏上方的对话框。
答案 0 :(得分: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);
答案 1 :(得分: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();
}