如何在TableLayout-> TableRow中自动调整ImageView的宽度?

时间:2017-09-14 07:16:11

标签: android android-4.4-kitkat android-tablelayout

TL; TR

image

问题

我在ImageView - > TableLayout中有多个TableRow个组件。当它们的高度向下缩小时,它们的宽度保持原始尺寸,在相邻列之间留下很大的空间。如何将宽度调整到最小以具有近旁列?

我已经尝试过使用android:adjustViewBounds - 但没有任何反应。在视图上设置固定值有效 - 但我讨厌它加上它不允许缩放UI。

Image showing current and desired layout.(与 tl; tr 部分相同)

工作区/目标

Android Studio 2.2.3
分钟。 SDK:API 19
目标SDK:API 25
@drawable/ic_placeholder尺寸:46x46px PNG

布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="40dp"
      tools:context="...">
  <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:src="@drawable/ic_placeholder" />
  <Space
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />
  <TableLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="end">

    <TableRow
          android:layout_width="wrap_content"
          android:layout_height="0dp"
          android:layout_weight="1"
          android:gravity="end">
      <ImageView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:adjustViewBounds="true"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            tools:src="@drawable/ic_placeholder" />
      <ImageView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:adjustViewBounds="true"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            tools:src="@drawable/ic_placeholder" />
      <ImageView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:adjustViewBounds="true"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            tools:src="@drawable/ic_placeholder" />
      <ImageView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:adjustViewBounds="true"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            tools:src="@drawable/ic_placeholder" />
    </TableRow>

  </TableLayout>
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

看看它是否符合您的需求:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:orientation="horizontal"
    tools:context="...">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:adjustViewBounds="true"
        android:scaleType="centerInside"
        tools:src="@drawable/ic_placeholder" />

    <Space
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <TableLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:shrinkColumns="*">

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView
                android:adjustViewBounds="true"
                android:paddingLeft="2dp"
                android:paddingRight="2dp"
                android:scaleType="centerInside"
                tools:src="@drawable/ic_placeholder" />

            <ImageView
                android:adjustViewBounds="true"
                android:paddingLeft="2dp"
                android:paddingRight="2dp"
                android:scaleType="centerInside"
                tools:src="@drawable/ic_placeholder" />

            <ImageView
                android:adjustViewBounds="true"
                android:paddingLeft="2dp"
                android:paddingRight="2dp"
                android:scaleType="centerInside"
                tools:src="@drawable/ic_placeholder" />

            <ImageView
                android:adjustViewBounds="true"
                android:paddingLeft="2dp"
                android:paddingRight="2dp"
                android:scaleType="centerInside"
                tools:src="@drawable/ic_placeholder" />

        </TableRow>

    </TableLayout>

</LinearLayout>