У меня есть настраиваемое диалоговое окно (cameraTipDialog ctd
), которое мне нужно расположить в определенной (x, y) позиции. Эта позиция основана на расположении кнопки на экране. Мне нужно поставить диалоговое окно в положение:
(int) ((ImageButton) findViewById(R.id.infoButton)).getY() - HEIGHT OF MY DIALOG BOX;'
Но я не могу понять, как получить высоту моего настраиваемого диалогового окна. Его высота равна «обернуть содержимое», поэтому, когда я получаю getLayoutParams.getHeight (), я получаю -1.
Следуя другим идеям о StackOverflow, я попытался использовать (ctd.findViewById(R.id.dialog_root_layout)).getHeight()
, но приложение вылетает, говоря, что оно не может найти элемент с идентификатором dialog_root_layout.
Показать код макета:
cameraTipDialog ctd = new cameraTipDialog(submitHome.this);
Window window = ctd.getWindow();
(ctd.findViewById(R.id.dialog_root_layout)).getHeight()
WindowManager.LayoutParams wlp = window.getAttributes();
wlp.gravity = Gravity.TOP | Gravity.LEFT;
wlp.x = (int) ((ImageButton) findViewById(R.id.infoButton)).getX();
wlp.y = (int) ((ImageButton) findViewById(R.id.infoButton)).getY() - DIALOG HEIGHT;
window.setAttributes(wlp);
ctd.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
ctd.show();
Диалоговое окно XML code:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/dialog_root_layout"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_marginLeft="16sp"
android:layout_marginRight="16dp"
android:background="@drawable/popup_background">
<TextView
android:id="@+id/content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="32dp"
android:text="@string/tipsForSuccess"
android:textColor="@android:color/white"
android:textSize="10sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/header" />
<TextView
android:id="@+id/header"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="text here."
android:textColor="@android:color/white"
android:textSize="10sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />