【问题标题】:Auto adjusting image sizes in GridLayout?在 GridLayout 中自动调整图像大小?
【发布时间】:2015-03-27 19:59:20
【问题描述】:

我有 12 张图像,希望以 4 行 3 列的网格显示。 为此,我使用了 GridLayout。 这些图像具有不同的大小,我希望它们能够被缩放,以便每个填充一个单元格,就像线性布局中的权重一样。 我玩过ImageViewsscaleTypeadjustViewBounds 属性,但只有通过手动设置layout_widthlayout_height 才能成功。 这是可能的还是我应该提前调整尺寸?有没有更好的方法可以通过不同的布局实现我的目标?

我正在使用 Android Studio 1.1.0,API 21。

谢谢!

activity_set_background.xml

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ImagesGridLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="3"
android:rowCount="4"
tools:context=".SetBackgroundActivity">


<ImageView
    android:id="@+id/background1"
    android:layout_gravity="start|top"
    android:scaleType="centerInside"
    android:adjustViewBounds="true"
    android:layout_rowSpan="1"
    android:layout_columnSpan="1"
    android:src="@drawable/bg1"
    android:layout_width="118dp"
    android:layout_height="97dp"
    android:layout_row="0"
    android:layout_column="0" />

<ImageView
    android:id="@+id/background2"
    android:layout_gravity="left|top"
    android:src="@drawable/bg2"
    android:layout_width="118dp"
    android:layout_height="97dp"
    android:layout_row="0"
    android:layout_column="1" />

<ImageView
    android:id="@+id/background3"
    android:layout_gravity="left|top"
    android:src="@drawable/bg3"
    android:layout_width="118dp"
    android:layout_height="97dp"
    android:layout_row="0"
    android:layout_column="2" />

<ImageView
    android:id="@+id/background4"
    android:layout_gravity="left|top"
    android:src="@drawable/bg4"
    android:layout_width="118dp"
    android:layout_height="97dp"
    android:layout_row="1"
    android:layout_column="0" />

<ImageView
    android:id="@+id/background5"
    android:layout_gravity="left|top"
    android:src="@drawable/bg5"
    android:layout_width="118dp"
    android:layout_height="97dp"
    android:layout_row="1"
    android:layout_column="1" />

<ImageView
    android:id="@+id/background6"
    android:layout_gravity="left|top"
    android:src="@drawable/bg6"
    android:layout_width="118dp"
    android:layout_height="97dp"
    android:layout_row="1"
    android:layout_column="2" />

<ImageView
    android:id="@+id/background7"
    android:layout_gravity="start|top"
    android:scaleType="centerInside"
    android:adjustViewBounds="true"
    android:layout_rowSpan="1"
    android:layout_columnSpan="1"
    android:src="@drawable/bg7"
    android:layout_row="2"
    android:layout_column="0"
    android:layout_width="124dp"
    android:layout_height="123dp" />

<ImageView
    android:id="@+id/background8"
    android:layout_gravity="left|top"
    android:src="@drawable/bg8"
    android:layout_width="131dp"
    android:layout_height="108dp"
    android:layout_row="2"
    android:layout_column="1" />

<ImageView
    android:id="@+id/background9"
    android:layout_gravity="left|top"
    android:src="@drawable/bg9"
    android:layout_width="118dp"
    android:layout_height="97dp"
    android:layout_row="2"
    android:layout_column="2" />

<ImageView
    android:id="@+id/background10"
    android:layout_gravity="left|top"
    android:src="@drawable/bg10"
    android:layout_width="118dp"
    android:layout_height="97dp"
    android:layout_row="3"
    android:layout_column="0" />

<ImageView
    android:id="@+id/background11"
    android:layout_gravity="left|top"
    android:src="@drawable/bg11"
    android:layout_width="118dp"
    android:layout_height="97dp"
    android:layout_row="3"
    android:layout_column="1" />

<ImageView
    android:id="@+id/background12"
    android:layout_gravity="left|top"
    android:src="@drawable/bg12"
    android:layout_width="118dp"
    android:layout_height="97dp"
    android:layout_row="3"
    android:layout_column="2" />

【问题讨论】:

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


【解决方案1】:

https://stackoverflow.com/a/14881357/2680254

public class SquareImageView extends ImageView
{ 

public SquareImageView(final Context context)
{ 
    super(context);
} 

public SquareImageView(final Context context, final AttributeSet attrs)
{ 
    super(context, attrs);
} 

public SquareImageView(final Context context, final AttributeSet attrs, final int defStyle)
{ 
    super(context, attrs, defStyle);
} 


@Override 
protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec)
{ 
    final int width = getDefaultSize(getSuggestedMinimumWidth(),widthMeasureSpec);
    setMeasuredDimension(width, width);
} 

@Override 
protected void onSizeChanged(final int w, final int h, final int oldw, final int oldh)
{ 
    super.onSizeChanged(w, w, oldw, oldh);
} 

}

【讨论】:

    【解决方案2】:

    根据我的想法,您可以使用相对和线性布局来显示 Imageview,并使用值文件夹中的不同样式设置其合并或填充以支持设备的大小,使用 imageview 设置下面的代码

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
    <LinearLayout
        android:id="@+id/first"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:weightSum="3" >
    
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
    
            android:adjustViewBounds="true"
            android:background="@drawable/ic_launcher"
            android:scaleType="centerInside"
            android:text="1" />
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/ic_launcher"
            android:scaleType="centerInside"
            android:text="1" />
    
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/ic_launcher"
            android:scaleType="centerInside"
            android:text="1" />
    </LinearLayout>
    <LinearLayout
        android:id="@+id/second"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/first"
        android:weightSum="3" >
    
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/ic_launcher"
            android:scaleType="centerInside"
            android:text="1" />
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/ic_launcher"
            android:scaleType="centerInside"
            android:text="1" />
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/ic_launcher"
            android:scaleType="centerInside"
            android:text="1" />
    </LinearLayout>
    <LinearLayout
        android:id="@+id/third"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/second"
        android:weightSum="3" >
    
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/ic_launcher"
            android:scaleType="centerInside"
            android:text="1" />
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/ic_launcher"
            android:scaleType="centerInside"
            android:text="1" />
    
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/ic_launcher"
            android:scaleType="centerInside"
            android:text="1" />
    </LinearLayout>
    <LinearLayout
        android:id="@+id/fourth"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/third"
        android:weightSum="3" >
    
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/ic_launcher"
            android:scaleType="centerInside"
            android:text="1" />
    
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/ic_launcher"
            android:scaleType="centerInside"
            android:text="1" />
    
        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/ic_launcher"
            android:scaleType="centerInside"
            android:text="1" />
    </LinearLayout>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 2014-07-03
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 2022-07-04
      • 2014-06-28
      相关资源
      最近更新 更多