2012-05-11 25 views
0

我要瘋了這個......爲什麼不會這個中心我已經嘗試了幾乎所有的組合中的居中選項,但是抄送文本和密碼字段不會居中!它的工作原理罰款的myTouch 4G,但人我的摩托羅拉手機的行爲,這樣的...摩托羅拉的Bug爲什麼這不是中心

我所說的對話與基本呼叫

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

下面是對話佈局看起來像在Eclispe的

enter image description here

這就是它顯示爲對話框時的樣子。

enter image description here

對話框佈局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> 

回答

1

我在我所有的摩托羅拉手機X2,Razr上看到了這一點......似乎絕對是摩托羅拉風格的一個缺陷。

我通過創建自己的風格並從我的\ android-sdk \ platforms \ android-10 \ data \ res \ drawable-hdpi複製panel_background並將其放置在我的drawable中來修復它。如果我使用@android:drawable/panel_background引用它,Eclipse將不會編譯。

styles.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> 

然後,只需調用對話的主題爲參數添加

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

有固定的摩托羅拉的問題!

0

如果我不得不做,我會使用的LinearLayout相同的佈局......

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

我會測試一下,看看它是否有效。 – JPM

+0

Nope不起作用,我直接複製並粘貼你的代碼! – JPM

+0

我在我的手機上試過我的代碼,一切都是中心對齊..正如所料。 奇怪! – Tarun

0

的RelativeLayout具有XML特性的Android; layout_alignCenter ,你可以在第一個textview上嘗試,然後將其餘的與textview對齊。

+0

已經做過似乎是OS /手機的具體問題......在MyTouch 4G上運行良好,但在我的摩托羅拉手機上運行得不錯。 – JPM

+0

哇。對不起,我無法提供更多幫助。 – Barak

+0

似乎摩托羅拉弄亂對話框樣式,將不得不重寫它... – JPM