Создание пользовательского диалогового окна в Android

Я пытаюсь создать пользовательское диалоговое окно в Android. Но независимо от того, что я пытался сделать, я не могу изменить ширину диалогового окна. Это просто остается тем же. Следующее является представлением, что я устанавливаю как содержание для диалогового окна.

<RelativeLayout  
android:id="@+id/current_stats"
android:layout_width="wrap_content"
android:layout_height="wrap_content" 
android:visibility="visible">
<ImageView android:id="@+id/player_image" 
    android:src="@drawable/person"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"/>
<TextView   
    android:id="@+id/player_name"
    android:layout_below="@id/player_image"
    android:layout_centerHorizontal="true"
    android:text="Raja Ram"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
<ImageButton android:id="@+id/dialog_close"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:background="#00000000"
    android:src="@drawable/close_button_selector"/>
<ImageButton android:id="@+id/dialog_flip"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:background="#00000000"
    android:src="@drawable/rotate"/>
</RelativeLayout>

Как Вы видите, везде я использую wrap_content в этом примере кода. Также я попробовал следующие опции

1) Установка пользовательского стиля при создании Диалогового окна как это.

dialog = new Dialog(this,R.style.Theme_Dialog);

И стиль следующим образом

<resources>
<style name="Theme" parent="android:Theme">
</style>
<style name="Theme.Dialog">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
</style>
</resources>

2) Установка параметров для представления в onCreateDialog () как это

LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.player_info, null, false);
ViewGroup.LayoutParams p = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
dialog.setContentView(v,p);

3) Я также пытался установить параметры Окна как это в onCreateDialog () метод

WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width=WindowManager.LayoutParams.WRAP_CONTENT;
dialog.getWindow().setAttributes(params);

Но снова никакая удача. Может кто-то выручать меня с этой проблемой. Я делаю что-то не так?? Также можно ли предложить меня, как установить постионы X и Y для Диалогового окна?

Спасибо

14
задан rajaramyadhav 3 August 2010 в 18:38
поделиться

2 ответа

Я понял проблему спустя долгое время. Проблема заключалась в том, как я использовал относительную разметку. Думаю, я неправильно указал относительное положение. Когда я изменил это на линейную компоновку, все заработало. Он не использовал весь экран, а только то, что требуется.

1
ответ дан 1 December 2019 в 08:51
поделиться

Ваша проблема в том, что он занимает всю ширину экрана или вы не можете контролировать, какую часть экрана он занимает?

Чтобы ваша деятельность действовала как диалоговое окно, а не занимать его полностью. Вам следует настроить свою деятельность так, чтобы в манифесте была тема диалога:

<activity android:theme="@android:style/Theme.Dialog">

Размер диалогового окна будет настолько велик, насколько этого требует ваш макет. Если вы хотите, чтобы он был шире, вам нужно сделать ваш макет шире. (Отрегулируйте размер изображений, добавьте отступы и т. Д.).

Я не знаю, как расположить диалоговое окно ... Я думаю, что оно всегда по центру, хотя могу ошибаться.

2
ответ дан 1 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: