2011-07-31 22 views
0

我创建了一个简单计算器的自定义对话框。我在Android 2.3.3中遇到了布局问题。对话框包含2.2.1和更低版本的计算器,但在2.3.3中则没有。下面我张贴了正在发生的图片和布局的XML代码。下面是我如何启动对话框的代码。感谢所有的帮助!Android:自定义对话框计算器在Android 2.2.1和2.3.3上布置不同的计算器

dialog on HTC thunderbold 2.2.1 http://img20.imageshack.us/img20/6981/htc221.png

dialog on droidX 2.3.3 http://img64.imageshack.us/img64/876/droidx233.png

<?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; 
} 
+0

是计算小计对话框标题?你可以发布你如何创建对话框......以及为什么你有两个相对的布局......虽然它不应该有任何区别。 – Necronet

+0

我刚刚更新了我的帖子,关于如何创建对话框。是计算小计是标题。根据用户点击什么来启动对话框,头部会发生变化。我没有很好的理由有两个相对布局。我会拿出一个看看会发生什么。 – KevinM

+0

@Necronet ...我拿出了额外的相对布局,它没有什么区别。 – KevinM

回答

0

确定。我找到了一个修复。将下面的代码插入到自定义对话框的onCreate()中。

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

将setBackgroundDrawable()设置为null会使背景不透明。这解决了这个问题,它仍然适用于较低版本的Android。

The Fixed Picture http://img827.imageshack.us/img827/5428/droidxfix233.png

感谢所有suggestionos

0

尝试设置的RelativeLayout的宽度FILL_PARENT

+0

我改变了relativelayouts的宽度来填充它,它变得更加棘手。 http://img32.imageshack.us/img32/3525/droidxwidthfill233.png这是一个链接到选择fill_parent的宽度。 – KevinM

+0

取出上层relativelayout,然后将剩余的relativelayout的layout_gravity设置为center_horizo​​ntal –

+0

这没有什么区别。仍然看起来就像这些变化http://img32.imageshack.us/img32/3525/droidxwidthfill233.png – KevinM