views:

245

answers:

2

Hi All,

I am trying to create a custom dialog in Android. But whatever I tried to do, I am not able to change the width of the dialog. It just remains the same. The following is the view that I am setting as the content for the dialog.

<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>

As you can see, everywhere I am using wrap_content in this code sample. Also I tried the following options

1) Setting a custom style while creating the Dialog like this.

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

And the style as follows

<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) Setting the parameters for the view in the onCreateDialog() like this

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) I also tried to set the Window parameters like this in the onCreateDialog() method

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

But again no luck. Can someone help me out with this issue. Am I doing something wrong?? Also can you please suggest me how to set the x and y postions for the Dialog window?

Thanks

+1  A: 

Is your problem that it takes the full width of the screen, or that you can't control how much of the screen is it taking up?

To make your activity act as a dialog, and not take up the full with you should set your activity to have the dialog theme in the manifest:

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

The dialog will be as large as is required by your layout. If you want it to be wider, you need to make your layout wider. (Adjust size of images, add padding, etc).

I'm not aware of a way to position the dialog window.. I think it is always centered, I could be wrong though.

Mayra
@Mayra: Thanks for ur reply. My problem is that I want it more like a pop-up window. Instead of using up the entire width of the screen, I just want it to consume only the width required to hold the view. And I am not starting a separate activity in that dialog. I am interested in showing a window that allows the user to perform some action and should allow few animations. I even tried PopupWindow but for some reason, my custom animation was not working with the popup window. Hope I made my requirement clear. Do you have any suggestions?
rajaramyadhav
A dialog themed activity will look like a pop-up window. This question shows an example of what it would look like: http://stackoverflow.com/questions/1967085/android-how-to-resize-dialog .
Mayra
A: 

I figured out the problem after a long time. The problem was with the way I used Relative layout. I guess I have not specified the relative position properly. When I changed that to linear layout it worked fine. It was not using up the whole screen but only whatever is required.

rajaramyadhav