Android Alertdialog在模拟器和设备上具有不同的大小

时间:2012-11-16 10:43:53

标签: android android-layout alertdialog

我创建并显示一个Alertdialog,它在模拟器中看起来很好但在我的设备中看起来很奇怪。

这就是模拟器中的样子:

enter image description here

这就是设备中的样子:

enter image description here

这是我正在执行以显示对话框的代码:

    AlertDialog.Builder builder;
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);


    View layout = inflater.inflate(R.layout.popup_contact, (ViewGroup) findViewById(R.id.ppc_llContact));
    tbMissatge = (EditText) layout.findViewById(R.id.ppc_tbMissatge);
    builder = new AlertDialog.Builder(this);


    builder.setView(layout);
    ppEnviarMsg = builder.create();


    btEnviar = (Button) layout.findViewById(R.id.ppc_btEnviar);
    btEnviar.setOnClickListener(this);

    ppEnviarMsg.show();


    ppEnviarMsg.getWindow().getAttributes().gravity = Gravity.CENTER;

这里是弹出窗口的布局:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ppc_llContact"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#414145"
        android:orientation="vertical"
        android:gravity="center">

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="#ffffff"
            android:text="@string/ppc_lbContact"
            android:layout_margin="4dp"/>

        <EditText
            android:id="@+id/ppc_tbMissatge"
            android:hint="@string/ppc_tooltipContact"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="2dp" 
            android:inputType="textMultiLine"
            android:gravity="top"
            android:lines="5">
        </EditText>

        <Button android:id="@+id/ppc_btEnviar"
            android:text="@string/ppc_btEnviar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:paddingLeft="20dp"
            android:paddingRight="20dp"
            android:layout_marginTop="10dp"/>

    </LinearLayout>

它可能与Sense有关吗?我的设备是HTC Desrie S,运行ICS和Sense。 有人知道吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我认为问题可能在这里:

View layout = inflater.inflate(R.layout.popup_contact, (ViewGroup) findViewById(R.id.ppc_llContact));

您使用Activity的某些布局ppc_llContact作为“为返回的层次结构的根提供一组LayoutParams值的对象”,这是非常无意义的,因为此布局不会参与最终层次结构对话框。

请改用:

View layout = inflater.inflate(R.layout.popup_contact, null);

另一种选择是以这种方式强制设置对话框的大小:

ppEnviarMsg.getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
//FILL_PARENT is an example