0

我需要将我的视图放置在中心,它的宽度不是应用程序正在运行的屏幕的特定百分比,match parent或者是特定百分比的大小。wrap content为了获得更灵活的布局,我没有使用尺寸设置其大小,而是为元素定义了权重,以使其具有所需的主要大小。为了做到这一点,我LinearLayouts为它们插入了两个额外的和定义的权重。我认为这不是Views在 XML 中增加数量的最佳解决方案。你们能告诉我更有效的方法吗?

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:background="@drawable/right_back"
                  android:orientation="horizontal"
                  android:gravity="center">

<!-- The first one I think which is redundant -->
        <LinearLayout
            android:layout_weight="25"
            android:layout_width="0dip"
            android:layout_height="wrap_content"/>

<!-- Main view I need to be of a required size on each screen size -->
        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:background="@drawable/layout_round_corners"
            android:orientation="vertical"
            android:layout_weight="50"
            android:padding="20dip">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/welcome_text"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="@color/text_color"
                android:layout_gravity="center_horizontal"/>

            <EditText
                android:id="@+id/edt_firsttimeactivity_first_field"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:hint="@string/password"
                android:password="true"
                android:singleLine="true"/>

            <EditText
                android:id="@+id/edt_firsttimeactivity_second_field"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/repeat_new_password_again"
                android:password="true"
                android:singleLine="true"/>

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:onClick="onButtonClick"
                android:text="@string/create_account_for_me"/>
        </LinearLayout>

<!-- The second one I think which is redundant -->
        <LinearLayout
            android:layout_weight="25"
            android:layout_width="0dip"
            android:layout_height="wrap_content"></LinearLayout>


    </LinearLayout>
4

2 回答 2

0

我相信问题是你没有定义一个weightSum. 您应该android:weightSum="100"(例如)添加到最外层的 LinearLayout,然后将该总和除以您想要的内部布局。

编辑:如果我正确理解了这个问题,我认为你应该能够通过简单地使用android:paddingLeftandroid:paddingRight作为你的“主视图”来解决问题。您也可以尝试android:layout_marginLeftandroid:layout_marginRight. 当然,fill_parent在这种情况下留下高度。希望有帮助。

于 2012-08-08T07:37:23.453 回答
0

这就是你应该如何编写布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"                  
              android:orientation="horizontal"
              android:background="@drawable/right_back"
              android:weightSum="1"
              android:gravity="center">

<!-- Main view I need to be of a required size on each screen size -->
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="@drawable/layout_round_corners"
        android:layout_weight=".5"
        android:padding="20dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/welcome_text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@color/text_color"
            android:layout_gravity="center_horizontal"/>

        <EditText
            android:id="@+id/edt_firsttimeactivity_first_field"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"                
            android:hint="@string/password"
            android:password="true"
            android:singleLine="true"/>

        <EditText
            android:id="@+id/edt_firsttimeactivity_second_field"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/repeat_new_password_again"
            android:password="true"
            android:singleLine="true"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:onClick="onButtonClick"
            android:text="@string/create_account_for_me"/>
    </LinearLayout>
</LinearLayout>

试试这个。您可以更改 2nd LinearLayout 的 layout_weight 以使其看起来像您喜欢的那样大或小。

于 2012-08-08T07:47:57.743 回答