在GridView中自动缩放图像

时间:2017-09-05 06:27:45

标签: android android-imageview grid-layout android-gridlayout

我有一个简单的网格视图,左边是图像,右边是两行文字。 " rowspan"为了使用两行文字的完整高度,图像为2:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:rowCount="2"
    android:columnCount="2">

<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_row="0"
    android:layout_rowSpan="2"
    android:src="@drawable/disconnected" />

<TextView
    android:id="@+id/connectionText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:layout_column="1"
    android:layout_row="0"
    android:layout_rowSpan="1"
    android:inputType="textPersonName"
    android:text="Name" />

<TextView
    android:id="@+id/stateText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:layout_column="1"
    android:layout_row="1"
    android:layout_rowSpan="1"
    android:inputType="textPersonName"
    android:text="disconnected" />
</GridLayout>

我的问题:我想将图像自动缩放到适合两行文本高度的大小,而不是以它的原始高度显示。有没有办法让布局自动完成?

谢谢!

1 个答案:

答案 0 :(得分:3)

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:rowCount="2"
        android:columnCount="2">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="0"
        android:layout_row="0"
        android:scaleType="fitCenter"
        android:layout_rowSpan="2"
        android:src="@drawable/disconnected" />

    <TextView
        android:id="@+id/connectionText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:layout_column="1"
        android:layout_row="0"
        android:layout_rowSpan="1"
        android:inputType="textPersonName"
        android:text="Name" />

    <TextView
        android:id="@+id/stateText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:layout_column="1"
        android:layout_row="1"
        android:layout_rowSpan="1"
        android:inputType="textPersonName"
        android:text="disconnected" />
</GridLayout>

我修改了你的xml,它可能会有所帮助。 我给出了特定的宽度和高度值,并将比例类型设置为适合中心。

您可以通过编程设置动态高度,此代码可以帮助您

        int first_view_hight = firstView.getLineHeight(); 


        int second_view_height = secondView.getLineHeight();


        int totalHeight = first_view_hight + second_view_height;


        GridLayout.LayoutParams lp = (GridLayout.LayoutParams) setHeightImage.getLayoutParams();
        lp.height = totalHeight;
        lp.width = totalHeight;
        imageView.setLayoutParams(lp);