如何提供适当的重量来正确对齐表android中的视图

时间:2017-11-30 08:57:39

标签: android android-layout android-linearlayout android-layout-weight

我正在使用一个标题,我需要放置七个具有相应值的标题。

但是第一列的图像有两个文字,这些文字很难适应桌面。

我给予了体重,但在与其他观点保持一致时遇到了麻烦。每当我改变一个视图时,例如:第5列,第6列重新排列。

我使用了一个列表,然后是行。

在主xml中,我使用了标题。

  
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorWhite"
    android:isScrollContainer="false"
    android:paddingBottom="20dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <!--Profile icon-->
        <include layout="@layout/common_profile_layout" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="26dp"
            android:background="@color/colorGrey">

            <TextView
                android:id="@+id/count_id"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginLeft="24dp"
                android:gravity="center"
                android:text="Laporan Aktivitas"
                android:textColor="?attr/colorUserGroup" />

            <Button
                android:id="@+id/dafatar_filter"
                android:layout_width="72dp"
                android:layout_height="20dp"
                android:layout_alignParentRight="true"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="10dp"
                android:background="@drawable/curve_corner_change_day"
                android:clickable="true"
                android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:text="Pilih Tanggal"
                android:textAllCaps="false"
                android:textColor="@android:color/white"
                android:textSize="10sp" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:orientation="vertical">

            <TextView
                android:id="@+id/dateTxt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_marginLeft="24dp"
                android:text="06/13/2017"
                android:textColor="@color/colorBlack"
                android:textSize="@dimen/text_size_small" />

            <ImageView
                android:id="@+id/route_plan_about_icon"
                android:layout_width="16dp"
                android:layout_height="16dp"
                android:layout_alignParentRight="true"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:layout_gravity="right"
                android:layout_marginBottom="2dp"
                android:layout_marginRight="22dp"
                android:layout_marginTop="2dp"
                android:src="?attr/info_drawable" />
        </RelativeLayout>
// here is where the title starts.
        <LinearLayout
            android:id="@+id/rel1"
            android:layout_width="match_parent"
            android:layout_height="33dp"
            android:layout_below="@+id/totalId"
            android:layout_marginTop="14dp"
            android:background="@drawable/nbd_title"
            android:gravity="center_vertical"
            android:weightSum="6">

            <TextView
                android:id="@+id/siteId"
                android:layout_width="35dp"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_marginLeft="10dp"
                android:layout_weight="1.2"
                android:text="Total"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/site"
                android:layout_width="72dp"
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:gravity="center"
                android:text="XXXXX"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/twoG"
                android:layout_width="20dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.65"
                android:gravity="center"
                android:text="XXX"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/threeG"
                android:layout_width="20dp"
                android:layout_height="wrap_content"
                android:layout_weight=".65"
                android:gravity="center"
                android:text="XXX"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/fourG"
                android:layout_width="20dp"
                android:layout_height="wrap_content"
                android:layout_weight=".65"
                android:gravity="center"
                android:text="XXX"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/retailerId"
                android:layout_width="35dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:text="XXX"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/idealId"
                android:layout_width="35dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:text="XXX"
                android:textSize="12sp" />

        </LinearLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/rel1">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:weightSum="6">

                <View
                    android:layout_width="72dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1.2"
                    android:background="@color/colorLightGray" />

                <View
                    android:layout_width="30dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1" />

                <View
                    android:layout_width="20dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="0.65"
                    android:background="@color/colorLightGray" />

                <View
                    android:layout_width="20dp"
                    android:layout_height="wrap_content"
                    android:layout_weight=".65" />

                <View
                    android:layout_width="20dp"
                    android:layout_height="wrap_content"
                    android:layout_weight=".65"
                    android:background="@color/colorLightGray" />

                <View

                    android:layout_width="35dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1" />

                <View
                    android:layout_width="35dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@color/colorLightGray" />
            </LinearLayout>

            <android.support.v7.widget.RecyclerView
                android:id="@+id/recycleViewIdNbd"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@+id/rel1"
                android:background="@android:color/transparent"
                android:paddingTop="18dp" />
        </FrameLayout>


    </LinearLayout>
</android.support.v4.widget.NestedScrollView>

然后在row.xml中:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="50dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:weightSum="6">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="1.9">


            <com.hutchison.h3i.newangie.customviews.CircleImageView
                android:id="@+id/recycle_profile"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_gravity="center"
                android:layout_marginLeft="8dp"
                android:src="@drawable/ic_default_profile" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:layout_gravity="center"
                android:layout_marginLeft="6dp"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/recycle_txt_acc_num"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ellipsize="end"
                    android:maxLines="1"
                    android:singleLine="false"
                    android:text="@string/route_plan_default_number"
                    android:textColor="@color/colorBlack"
                    android:textSize="@dimen/text_size_tiny_small_nine" />

                <TextView
                    android:id="@+id/recycle_txt_acc_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ellipsize="end"
                    android:maxLines="1"
                    android:singleLine="false"
                    android:text="SE A"
                    android:textColor="?attr/colorUserGroup"
                    android:textSize="@dimen/text_size_very_small" />
            </LinearLayout>
        </LinearLayout>

        <TextView
            android:id="@+id/txtretailerId"
            android:layout_width="23dp"
            android:layout_height="wrap_content"
            android:layout_weight="1.7"
            android:gravity="center"
            android:text="XXXXX"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/txtidealId"
            android:layout_width="20dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:gravity="center"
            android:text="XXX"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/txtidealId_1"
            android:layout_width="20dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.3"
            android:gravity="center"
            android:text="XXX"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/txtidealId_2"
            android:layout_width="20dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.3"
            android:gravity="center"
            android:text="XXX"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/txtidealId_3"
            android:layout_width="20dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.3"
            android:gravity="center"
            android:text="XXX"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/txtidealId_4"
            android:layout_width="20dp"
            android:layout_height="wrap_content"
            android:layout_weight="1.2"
            android:gravity="center"
            android:text="XXX"
            android:textSize="12sp" />
    </LinearLayout>
    </RelativeLayout>

但我的输出看起来像,

enter image description here

但实际输出是,

enter image description here

你可以清楚地看到我的输出中的哪个位置,对齐是不匹配而且不合适。我试图调整,但我无法正常实现。

3 个答案:

答案 0 :(得分:4)

试试这个.. 这将有效...

main.xml中

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorWhite"
    android:isScrollContainer="false"
    android:paddingBottom="20dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <!--Profile icon-->
        <!--  <include layout="@layout/common_profile_layout" />-->

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="26dp"
            android:background="@color/colorGrey">

            <TextView
                android:id="@+id/count_id"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginLeft="24dp"
                android:gravity="center"
                android:text="Laporan Aktivitas"
                android:textColor="?attr/scrimAnimationDuration" />

            <Button
                android:id="@+id/dafatar_filter"
                android:layout_width="72dp"
                android:layout_height="20dp"
                android:layout_alignParentRight="true"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="10dp"
                android:background="@drawable/setting"
                android:clickable="true"
                android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:text="Pilih Tanggal"
                android:textAllCaps="false"
                android:textColor="@android:color/white"
                android:textSize="10sp" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:orientation="vertical">

            <TextView
                android:id="@+id/dateTxt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_marginLeft="24dp"
                android:text="06/13/2017"
                android:textColor="@color/colorBlack"
                android:textSize="@dimen/font_16" />

            <ImageView
                android:id="@+id/route_plan_about_icon"
                android:layout_width="16dp"
                android:layout_height="16dp"
                android:layout_alignParentRight="true"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:layout_gravity="right"
                android:layout_marginBottom="2dp"
                android:layout_marginRight="22dp"
                android:layout_marginTop="2dp"
                android:src="?attr/constraintSet" />
        </RelativeLayout>
        // here is where the title starts.

        <LinearLayout
            android:id="@+id/rel1"
            android:layout_width="match_parent"
            android:layout_height="33dp"
            android:layout_below="@+id/totalId"
            android:layout_marginTop="14dp"
            android:background="@drawable/crop_image_menu_rotate_left"
            android:gravity="center_vertical"
            android:weightSum="10">

            <TextView
                android:id="@+id/siteId"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_alignParentLeft="true"
                android:layout_weight="2.5"
                android:gravity="center"
                android:text="Total"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/site"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1.5"
                android:gravity="center"
                android:text="XXXXX"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/twoG"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1.2"
                android:gravity="center"
                android:text="XXX"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/threeG"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1.2"
                android:gravity="center"
                android:text="XXX"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/fourG"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1.2"
                android:gravity="center"
                android:text="XXX"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/retailerId"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1.2"
                android:gravity="center"
                android:text="XXX"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/idealId"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1.2"
                android:gravity="center"
                android:text="XXX"
                android:textSize="12sp" />

        </LinearLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/rel1">


            <android.support.v7.widget.RecyclerView
                android:id="@+id/recycleViewIdNbd"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@+id/rel1"
                android:background="@android:color/transparent"
                android:paddingTop="18dp" />
        </FrameLayout>


    </LinearLayout>
</android.support.v4.widget.NestedScrollView>

row.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="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:padding="5dp"
        android:weightSum="10">
        <!--colorLightGray-->

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="2.5"
            android:background="@color/colorLightGray">


            <com.hutchison.h3i.newangie.customviews.CircleImageView
                android:id="@+id/recycle_profile"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_gravity="center"
                android:layout_marginLeft="8dp"
                android:src="@drawable/ic_default_profile" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_centerInParent="true"
                android:orientation="vertical"
                android:paddingLeft="3dp">

                <TextView
                    android:id="@+id/recycle_txt_acc_num"
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:gravity="center_vertical"
                    android:maxLines="1"
                    android:singleLine="false"
                    android:text="appname"
                    android:textColor="@color/colorBlack"
                    android:textSize="14sp" />

                <TextView
                    android:id="@+id/recycle_txt_acc_name"
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:ellipsize="end"
                    android:maxLines="1"
                    android:singleLine="false"
                    android:text="SE A"
                    android:textColor="@color/colorAccent"
                    android:textSize="12sp" />
            </LinearLayout>
        </LinearLayout>

        <TextView
            android:id="@+id/txtretailerId"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1.5"
            android:gravity="center"
            android:text="XXXXX"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/txtidealId"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1.2"
            android:background="@color/colorLightGray"
            android:gravity="center"
            android:text="XXX"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/txtidealId_1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1.2"
            android:gravity="center"
            android:text="XXX"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/txtidealId_2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1.2"
            android:background="@color/colorLightGray"
            android:gravity="center"
            android:text="XXX"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/txtidealId_3"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1.2"
            android:gravity="center"
            android:text="XXX"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/txtidealId_4"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1.2"
            android:background="@color/colorLightGray"
            android:gravity="center"
            android:text="XXX"
            android:textSize="12sp" />
    </LinearLayout>

答案 1 :(得分:1)

LinearLayout weightsum 属性。
例如,如果要将线性父项中的每个子项设置为相同大小,只需设置android:layout_weight =&#34; 1&#34;对于所有孩子并设置android:layout:width =&#34; 0dp&#34;。无需使用权重属性。

重要设置android:layout:width =&#34; 0dp&#34;如果你想要子视图权重属性工作。

您可以设置一个视图来填充布局中的剩余空间。看一下示例https://developer.android.com/guide/topics/ui/layout/linear.html

根据第二张图片所需的基础,请尝试以下代码:

<强> main.xml中

List

<强> Row.xml

<LinearLayout
    android:id="@+id/rel1"
    android:layout_width="match_parent"
    android:layout_height="33dp"
    android:layout_below="@+id/totalId"
    android:layout_marginTop="14dp"
    android:background="@drawable/nbd_title"
    android:gravity="center_vertical"
    android:weightSum="7">

    <TextView
        android:id="@+id/siteId"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="10dp"
        android:layout_weight="2.2"
        android:text="Total"
        android:textSize="12sp" />

    <TextView
        android:id="@+id/site"
        android:layout_width="72dp"
        android:layout_height="wrap_content"
        android:layout_weight="1.3"
        android:gravity="center"
        android:text="XXXXX"
        android:textSize="12sp" />

    <TextView
        android:id="@+id/twoG"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.7"
        android:gravity="center"
        android:text="XXX"
        android:textSize="12sp" />

    <TextView
        android:id="@+id/threeG"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.7"
        android:gravity="center"
        android:text="XXX"
        android:textSize="12sp" />

    <TextView
        android:id="@+id/fourG"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.7"
        android:gravity="center"
        android:text="XXX"
        android:textSize="12sp" />

    <TextView
        android:id="@+id/retailerId"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.7"
        android:gravity="center"
        android:text="XXX"
        android:textSize="12sp" />

    <TextView
        android:id="@+id/idealId"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.7"
        android:gravity="center"
        android:text="XXX"
        android:textSize="12sp" />

</LinearLayout>

因此,您的总子layout_weight属性与父权重匹配。对父母和父母使用相同的财产孩子排得到实际结果。
希望它有所帮助..!

答案 2 :(得分:0)

确保相应列(标题和行)提到的权重相同。 此外,子元素的所有权重必须累加到父元素的weightSum。