12

カスタム ダイアログを作成しようとしていて、そのコンテンツを中央に配置していますが、常に左揃えになります。aboutdialog.xml は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:a="http://schemas.android.com/apk/res/android"
  a:orientation="vertical"
  a:id="@+id/AboutDialogLayout" 
  a:layout_width="fill_parent" 
  a:layout_height="fill_parent" 
  a:layout_gravity="center_horizontal" 
  a:gravity="center_horizontal">

    <ImageView a:id="@+id/imageView1" 
               a:src="@drawable/pricebook" 
               a:layout_height="wrap_content" 
               a:layout_width="wrap_content"/>
    <TextView a:layout_height="wrap_content"         
              a:textAppearance="?android:attr/textAppearanceLarge" 
              a:id="@+id/textView1" 
              a:text="Price Book" 
              a:layout_width="wrap_content"/>
    <TextView a:layout_height="wrap_content" 
              a:id="@+id/textView2" 
              a:layout_width="wrap_content" 
              a:text="foo"/>
</LinearLayout>

そして私の(関連する)コード:

Dialog d = new Dialog(this);
d.setContentView(R.layout.aboutdialog);
d.setTitle(R.string.app_name);

ここで何が欠けていますか?助けてくれてありがとう。

画像: ダイアログの問題のスクリーンショット

4

4 に答える 4

11

これを編集してみてください。a:layout_gravity="center_horizontal|center_vertical"
または 、Relative_Layoutを使用して、RelativeforLinear
を使用して線形レイアウトを親の中心に揃えます。fill_parentwrap_content

センターで私と一緒に働いていますが

于 2011-09-09T18:28:45.303 に答える
2

コンテンツレイアウトを保持するダイアログのViewGroup(FrameLayout)を変更します。静的メソッドを使用して、DialogFragmentsのonActivityCreated()内で呼び出します。

/**
 * Center dialog content inside available space
 * @param dialog
 */
public static void centerDialogContent(Dialog dialog) {
ViewGroup decorView = (ViewGroup) dialog.getWindow().getDecorView();
View content = decorView.getChildAt(0);
FrameLayout.LayoutParams contentParams = (FrameLayout.LayoutParams)content.getLayoutParams();
contentParams.gravity = Gravity.CENTER;
content.setLayoutParams(contentParams);
}
于 2012-06-29T07:13:18.380 に答える
0

あなたは良いlayout_gravityをやっていますが、最も外側のレイアウトに対してそれを行うので、その周りにあるものに対して自分自身を配置することはできません.

上記のレイアウトを別のレイアウト内にラップするとそれができると思います

于 2011-09-09T18:17:45.210 に答える
0

LinearLayout の layout_gravity を重力のみに変更してみてください。ここで説明されている違いを参照してください: Gravity and layout_gravity on Android

于 2011-09-09T18:33:31.693 に答える