Диалоговая активность для переноса содержимого
Были похожие вопросы, связанные с диалоговыми операциями, и как сделать этот полный экран, но у меня есть немного другая проблема. Я хочу, чтобы эти диалоги отображали содержимое активности.
Теперь "действия диалога" наследуют следующую тему,
<style name="tabDialog" parent="@android:Theme.Dialog">
<item name="android:windowBackground">@drawable/panel_background</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">false</item>
</style>
Пример определения активности в манифесте,
<activity android:name=".TabSettingsActivity"
android:theme="@style/tabDialog" android:excludeFromRecents="true"
android:configChanges="keyboardHidden" />
Представление родительского представления содержимого определяется следующим образом:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="@layout/dialog_rounded_background"
android:orientation="vertical">
и все дочерние представления в макете также указывают wrap_content для обоих измерений. Я попытался использовать RelativeLayout как родительский, но тот же самый.
После того, как представление содержимого было установлено в onCreate активности, я делаю это
getWindow().setLayout(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
Ничто из этого не имеет никакого значения. Проблема в основном связана с высотой диалога, которая на 50% больше необходимой. Половина диалога - это просто мертвое пространство. Установка размеров корневого представления для жестко закодированных блоков dp решает проблему, но это похоже на обходное решение, а не на решение.
Любые идеи кто-нибудь?
Спасибо заранее.
Приветствия
Ответы
Ответ 1
Попробуйте это. Это решило мою проблему.
<style name="NewDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowTitleStyle">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:background">@android:color/transparent</item>
</style>
Ответ 2
Диалоговый фон в родительском представлении "dialog_rounded_background", который вы используете, является проблемой, поскольку он может быть больше размера вашего экрана. Пожалуйста, проверьте это.
Ответ 3
Попробуйте установить layout_margin. Если это не удастся, может быть виновато обычное заполнение и поля активности.
Ответ 4
Я использую DialogFragment
, и он хорошо работает, если вы используете setStyle
public class MyDialogFragment extends DialogFragment {
public MyDialogFragment() {
setStyle(STYLE_NO_FRAME, android.R.style.Theme_Dialog);
}
}
Ответ 5
Используйте настраиваемый диалог для этого.
Просто установите xml-макет, чтобы заполнить экран родительским layout_width
до fill_parent
.
Ответ 6
Просто вы можете получить ширину и высоту экрана устройства Android. По:
//Define the size of layout
Display display = getWindowManager().getDefaultDisplay();
int widths = display.getWidth();
int heights = display.getHeight();
Затем вы можете указать ширину или высоту на основе этих значений! В:
getWindow().setLayout(widths ,
heights );
Надеюсь, это будет полезно:),,
Ответ 7
используйте тему Theme.AppCompat.Light.Dialog.Alert вместо этого. она должна обернуть высоту диалогового окна для обертывания содержимого.