Как настроить ширину и высоту, когда отображается действие как диалоговое окно
Если я определил действие:
public class DialogActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(dialog_activity.xml);
}
}
Я хотел бы отобразить вышеуказанную активность как диалог, поэтому в файле AndroidManifest.xml я объявляю это действие, как показано ниже:
<activity android:name=".DialogActivity" android:theme="@android:style/Theme.Dialog"/>
Все в порядке, мой DialogActivity
показал как диалог.
Проблема заключается в том, как настроить ширину и высоту DialogActivity
, чтобы сделать ее более похожей на небольшой диалог? (В настоящее время он занимает большую часть экрана по умолчанию)
---------------------------- Update --------------- --------
Я определил пользовательскую тему, как показано ниже:
<style name="myDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:width">100dip</item>
<item name="android:height">100dip</item>
</style>
Затем объявите DialogActivity
в AndroidManifest.xml как.
<activity android:name=".DialogActivity" android:theme="@style/myDialog"/>
Мой DialogActivity
теперь даже занимает весь экран: ( ширина и высота:
<item name="android:width">100dip</item>
в теме не имеет никакого эффекта, почему?
Ответы
Ответ 1
Наконец-то я выяснил один способ настроить размер моего DialogActivity
.
Внутри метода onCreate()
DialogActivity
добавьте следующий код:
WindowManager.LayoutParams params = getWindow().getAttributes();
params.x = -20;
params.height = 100;
params.width = 550;
params.y = -10;
this.getWindow().setAttributes(params);
Ответ 2
У меня была аналогичная проблема, я использовал следующую тему для своей деятельности
android:theme="@style/Base.Theme.AppCompat.Light.Dialog"
Следующий код исправил мою проблему
setContentView(R.layout.activity_layout);
getWindow().setLayout(width(pixels),height(pixels));
Ответ 3
Вам нужно предоставить свою собственную тему диалога, см. http://developer.android.com/guide/topics/ui/themes.html и Как изменить тема для AlertDialog
Ответ 4
Вы можете установить высоту и ширину макета в XML файле макета
Вы можете даже упомянуть такие значения, как "240px" для Android: layout_width/android: layout_height