我创建并显示一个Alertdialog,它在模拟器中看起来很好但在我的设备中看起来很奇怪。
这就是模拟器中的样子:
这就是设备中的样子:
这是我正在执行以显示对话框的代码:
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。 有人知道吗?
感谢您的帮助!
答案 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