如何在android中横向居中对齐活动与对话框主题

时间:2014-04-30 05:29:41

标签: android android-layout android-dialog

在我的应用程序中,我使用带有对话框主题的活动来显示消息。我喜欢将活动与屏幕中心对齐。但是活动不是水平集中的。如何实现这一点。

代码尝试如下

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.callinfo);

        WindowManager.LayoutParams wmlp = getWindow().getAttributes();
        wmlp.width = LayoutParams.MATCH_PARENT;
        wmlp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL;

        String incomingNumber = getIntent().getStringExtra("incomingNumber");
        TextView tvNumber = (TextView)findViewById(R.id.Number);
        tvNumber.setText(incomingNumber);

        new Handler().postDelayed(new Runnable(){
            public void run() {
                finish();                    
            }                   
        }, 60 *1000);
    }

当前情况的屏幕截图

enter image description here

XML

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/layout_bg"
        android:layout_margin="10dp"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/optrlogo"
                android:padding="5dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                />

            <LinearLayout
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:orientation="vertical">

                <!-- line 1 -->
                <TextView
                    android:id="@+id/Number"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:textSize="15sp"
                    android:textColor="@android:color/black"
                    android:text="-" />

                <!-- line 2 -->
                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/CType"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:textSize="12sp"
                        android:layout_weight="1"
                        android:textColor="@android:color/black"
                        android:gravity="left"
                        android:text="-"/>

                    <TextView
                        android:id="@+id/Optr"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:textSize="12sp"
                        android:textColor="@android:color/black"
                        android:layout_weight="1"
                        android:gravity="right"
                        android:text="-" />

                </LinearLayout>
                <!-- line 3 -->
                <TextView
                    android:id="@+id/Location"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:textSize="10sp"
                    android:textColor="@android:color/black"
                    android:gravity="left"
                    android:text="-" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

1 个答案:

答案 0 :(得分:4)

很简单,Gravity设置中心只是这样:

 wmlp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL;

替换为

wmlp.gravity = Gravity.CENTER;

同样改变:

wmlp.width = LayoutParams.MATCH_PARENT;

wmlp.width = LayoutParams.WRAP_CONTENT;

xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:background="@drawable/layout_bg"
    android:layout_gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/optrlogo"
            android:padding="5dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            />

        <LinearLayout
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:orientation="vertical">

            <!-- line 1 -->
            <TextView
                android:id="@+id/Number"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="15sp"
                android:textColor="@android:color/black"
                android:text="-" />

            <!-- line 2 -->
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <TextView
                    android:id="@+id/CType"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:textSize="12sp"
                    android:layout_weight="1"
                    android:textColor="@android:color/black"
                    android:gravity="left"
                    android:text="-"/>

                <TextView
                    android:id="@+id/Optr"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:textSize="12sp"
                    android:textColor="@android:color/black"
                    android:layout_weight="1"
                    android:gravity="right"
                    android:text="-" />

            </LinearLayout>
            <!-- line 3 -->
            <TextView
                android:id="@+id/Location"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="10sp"
                android:textColor="@android:color/black"
                android:gravity="left"
                android:text="-" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>