Search code examples
androidxmllayoutdialogandroid-2.3-gingerbread

Android: Custom Dialog Calculator laying out different on Android 2.2.1 and 2.3.3


I've created a custom dialog that is a simple calculator. I'm having a problem with the layout in Android 2.3.3. The dialog wraps the calculator perfect in 2.2.1 and lower, but in 2.3.3 it doesn't. Below I've posted picture of that is happening and the XML code for the layout. And below that is the code on how i start the Dialog. Thanks for all the help!!!

dialog on HTC thunderbold 2.2.1

dialog on droidX 2.3.3

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:gravity="center"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" >
  <RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <EditText 
        android:id="@+id/calc_dialog_display"
        android:textSize="@dimen/calc_dialog_text_size" 
        android:editable="false"
        android:clickable="false"
        android:focusable="false"
        android:cursorVisible="false"
        android:gravity="right"     
        android:layout_alignParentTop="true" 
        android:layout_centerHorizontal="true"
        android:layout_width="238dp"
        android:layout_height="wrap_content" />
    <EditText 
        android:id="@+id/calc_dialog_display_fake"
        android:textSize="@dimen/calc_dialog_text_size" 
        android:visibility="invisible"
        android:editable="false"
        android:clickable="false"
        android:focusable="false"
        android:cursorVisible="false"
        android:gravity="right"     
        android:layout_alignParentTop="true" 
        android:layout_centerHorizontal="true"
        android:layout_width="238dp"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/enter_total"
        android:text="@string/calc_dialog_enter_total_button"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/calc_dialog_display"
        android:layout_alignParentLeft="true"
        android:layout_width="180dp"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/all_clear"
        android:text="AC"
        android:textSize="@dimen/calc_dialog_text_size"
        android:textColor="@color/all_clear_color"
        android:layout_below="@id/calc_dialog_display"
        android:layout_toRightOf="@id/enter_total"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/seven"
        android:text="7"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/enter_total"
        android:layout_alignParentLeft="true"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/eight"
        android:text="8"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/enter_total"
        android:layout_toRightOf="@id/seven"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/nine"
        android:text="9"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/enter_total"
        android:layout_toRightOf="@id/eight"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/division"
        android:text="÷"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/enter_total"
        android:layout_toRightOf="@id/nine"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/four"
        android:text="4"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/seven"
        android:layout_alignParentLeft="true"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/five"
        android:text="5"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/seven"
        android:layout_toRightOf="@id/four"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/six"
        android:text="6"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/seven"
        android:layout_toRightOf="@id/five"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/multiply"
        android:text="x"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/seven"
        android:layout_toRightOf="@id/six"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/one"
        android:text="1"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/four"
        android:layout_alignParentLeft="true"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/two"
        android:text="2"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/four"
        android:layout_toRightOf="@id/one"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/three"
        android:text="3"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/four"
        android:layout_toRightOf="@id/two"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/subtract"
        android:text="-"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/four"
        android:layout_toRightOf="@id/three"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/decimal"
        android:text="."
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/one"
        android:layout_alignParentLeft="true"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/zero"
        android:text="0"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/one"
        android:layout_toRightOf="@id/decimal"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/equals"
        android:text="="
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/one"
        android:layout_toRightOf="@id/zero"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />
    <Button
        android:id="@+id/addition"
        android:text="+"
        android:textSize="@dimen/calc_dialog_text_size"
        android:layout_below="@id/one"
        android:layout_toRightOf="@id/equals"
        android:layout_width="@dimen/calc_dialog_button_width"
        android:layout_height="@dimen/calc_dialog_button_height" />     
    </RelativeLayout>
</RelativeLayout>

.

@Override
protected Dialog onCreateDialog(int id) {
    super.onCreateDialog(id);
    Dialog dialog = null;

    switch(id){
    case 1:
        dialog = new CustomCalcDialog(this, shippingPercent, QUICK_CALC_TRIGGER);
        dialog.setTitle("Enter Shipping %");
        break;
    case 2:
        dialog = new CustomCalcDialog(this, taxPercent, QUICK_CALC_TRIGGER);
        dialog.setTitle("Enter Tax Rate");
        break;
    case 3:
        dialog = new CustomCalcDialog(this, commissionPercent, QUICK_CALC_TRIGGER);
        dialog.setTitle("Enter Commission %");
        break;
    case 4:
        dialog = new CustomCalcDialog(this, productSubtotal, QUICK_CALC_TRIGGER);
        dialog.setTitle("Calculate Subtotal");
        break;
    case 5:
        dialog = new CustomCalcDialog(this, addShipping, QUICK_CALC_TRIGGER);
        dialog.setTitle("Additional Shipping");
        break;
    case 6:
        dialog = new BackgroundOptionsDialog(this, quickCalcBackground);
        dialog.setTitle("Choose Background:");
        break;
    case 7:
        dialog = new CustomCalcDialog(this, shippingDollar, QUICK_CALC_TRIGGER);
        dialog.setTitle("Enter Shipping $");
        break;
    }
    return dialog;
}

Solution

  • OK. I found a fix. inserted the below code in the onCreate() for the Custom Dialog.

    Window windowProperties = getWindow();
    windowProperties.setBackgroundDrawable(null);
    

    Setting the setBackgroundDrawable() to null makes it so the background is opaque. This fixed the problem and it still work in lower versions of Android.

    The Fixed Picture

    Thanks for all the suggestionos