Как обеспечить правильный вес, чтобы правильно выровнять вид в таблице Android
Я использую заголовок, где мне нужно разместить семь заголовков с соответствующими значениями.
Но в первом столбце есть изображение с двумя текстами, которые трудно разместить внутри таблицы.
Я дал вес, но это мешает совмещаться с другими взглядами. Каждый раз, когда я меняю один вид, например, для 5-го столбца, шестой столбец переставляется.
Я использовал список, за которым следовала строка.
В основном 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>
Но мой вывод выглядит как,
Но фактический результат есть,
Вы можете ясно видеть, где в моем выводе выровнено выравнивание и не соответствует должным образом. Я пытался выровнять, но не смог добиться этого должным образом.
3 ответа
Попробуйте это.. Это будет работать...
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>
LinearLayout со свойством weightsum.
Например, если вы хотите установить для каждого дочернего элемента в линейном родителе одинаковый размер, просто установите android:layout_weight ="1" для всех дочерних элементов и установите android:layout:width = "0dp". Нет необходимости использовать свойство weightsum.
Важно установить Android: layout: width = "0dp", если вы хотите, чтобы свойство веса дочернего вида работало.
Вы можете установить один вид, чтобы заполнить оставшееся пространство в макете. Посмотрите на пример https://developer.android.com/guide/topics/ui/layout/linear.html.
В качестве необходимой основы для второго изображения попробуйте следующий код:
main.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>
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="7">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="2.2">
<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="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.3"
android:gravity="center"
android:text="XXXXX"
android:textSize="12sp" />
<TextView
android:id="@+id/txtidealId"
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/txtidealId_1"
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/txtidealId_2"
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/txtidealId_3"
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/txtidealId_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:gravity="center"
android:text="XXX"
android:textSize="12sp" />
</LinearLayout>
</RelativeLayout>
Таким образом, ваше общее дочернее свойство layout_weight соответствует родительскому весовому значению. используйте одно и то же свойство для родительской и дочерней строк, чтобы получить реальный результат.
Надеюсь, поможет..!
Убедитесь, что веса, указанные для соответствующих столбцов (заголовок и строки), одинаковы. Кроме того, все веса дочерних элементов должны складываться в weightSum родительского элемента.