0

我要疯了......为什么这个中心我已经尝试了几乎所有的组合居中选项,但是该死的文本和密码字段不会居中!它在 MyTouch 4G 上运行良好,但在我的摩托罗拉手机上,它的行为都是这样的......

我用基本调用调用对话框

Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.preference_dialog);
dialog.setTitle(getResources().getText(R.string.stringLoginTitle));
dialog.setCancelable(true);
dialog.show();

这是 Eclispe 中的对话框布局

在此处输入图像描述

这是显示为对话框时的样子。

在此处输入图像描述

对话框布局 xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" 
android:layout_centerHorizontal="true"
android:gravity="center" android:layout_gravity="center">

<TextView
    android:id="@+id/tv_LoginTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="@string/stringLoginPassword" 
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:gravity="center" />


<EditText
    android:id="@+id/et_AdminPassword"
    android:layout_width="120dip"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_below="@+id/tv_LoginTitle"
    android:inputType="textPassword" >

    <requestFocus />
</EditText>

<Button
    android:id="@+id/btn_AdminOkay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/et_AdminPassword"
    android:layout_alignLeft="@+id/et_AdminPassword"
    android:text="Login" />

<Button
    android:id="@+id/btn_AdminCancel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/et_AdminPassword"
    android:layout_alignRight="@+id/et_AdminPassword"
    android:text="Cancel" />

</RelativeLayout>
4

3 回答 3

1

我在我所有的摩托罗拉手机 X2、Razr 上都看到了这一点……似乎绝对是摩托罗拉风格中的一个错误。

我通过创建自己的样式并从我的 \android-sdk\platforms\android-10\data\res\drawable-hdpi 复制 panel_background 并将其放置在我的 drawable 中来修复它。如果我使用@android:drawable/panel_background 引用它,Eclipse 将无法编译。

样式.xml

<style name="Theme.CustomDialog" parent="@android:style/Theme.Dialog">
    <item name="android:windowBackground">@drawable/panel_background</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>

然后只需调用添加了 Theme 参数的对话框

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

已修复摩托罗拉问题!

于 2012-05-11T19:35:53.913 回答
0

如果我必须制作相同的布局,我会使用线性布局......

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:orientation="vertical"
                android:gravity="center" android:layout_gravity="center">

    <TextView
            android:id="@+id/tv_LoginTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:text="@string/stringLoginPassword" 
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:gravity="center" />


    <EditText
            android:id="@+id/et_AdminPassword"
            android:layout_width="120dip"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:inputType="textPassword" >

        <requestFocus />
    </EditText>
    <LinearLayout 
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:orientation="horizontal"
                  android:gravity="center" android:layout_gravity="center">
    <Button
            android:id="@+id/btn_AdminOkay"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Login" />

    <Button
            android:id="@+id/btn_AdminCancel"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Cancel" />
    </LinearLayout>
</LinearLayout>
于 2012-05-11T17:39:40.253 回答
0

RelativeLayout 有一个 XML 属性 android;layout_alignCenter,您可以在第一个 textview 上尝试,然后将其余部分与 textview 对齐。

于 2012-05-11T18:02:59.553 回答