我有一个gridview
,对于每个项目我有一个imageview
有3个textView
s,我的问题是我使用wrap_ content
作为项目的大小,所以我所有物品的大小都相同。我的gridview
代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/back_ground">
<GridView
android:id="@+id/gridView2"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="2.0"
android:alwaysDrawnWithCache="true"
android:columnWidth="@dimen/grid_column"
style="@style/grid_space"
android:drawSelectorOnTop="false"
android:numColumns="auto_fit"
android:persistentDrawingCache="animation|scrolling"
android:scrollbars="none"
android:stackFromBottom="false"
android:stretchMode="columnWidth"
android:verticalSpacing="48dp">
</GridView>
</LinearLayout
我的项目代码:
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/round_boutton"
android:orientation="vertical"
android:padding="5dp">
<ImageView
android:layout_height="96dp"
android:id="@+id/imageView1"
android:layout_width="96dp"
android:src="@drawable/icon"
android:layout_marginTop="15dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true">
</ImageView>
<TextView
android:text="TextView"
android:id="@+id/textView1"
android:layout_below="@+id/imageView1"
android:layout_marginTop="4dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textColor="@color/orangemil"
android:paddingTop="4dp"
android:textSize="14dip"
android:gravity="center_horizontal|center_vertical"></TextView>
<TextView android:text=" "
android:id="@+id/textView2"
android:layout_marginTop="10dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_below="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"></TextView>
<TextView android:text=" "
android:id="@+id/textView3"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_below="@+id/textView2"
android:layout_width="wrap_content"
android:layout_marginBottom="15dp"
android:layout_height="wrap_content"
android:textColor="@color/white"></TextView>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_below="@+id/textView3"
android:background="@android:color/transparent"/>
</RelativeLayout>
我尝试使用固定大小:
gridView.setLayoutParams(new GridView.LayoutParams(150,150)); //dimension in px
答案 0 :(得分:1)
如果你要添加imageview?然后 像这样制作动态图像视图
public class DynamicImageView extends ImageView {
public DynamicImageView(final Context context, final AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {
final Drawable d = this.getDrawable();
if (d != null) {
// ceil not round - avoid thin vertical gaps along the left/right edges
final int width = MeasureSpec.getSize(widthMeasureSpec);
final int height = (int) Math.ceil(width * (float) d.getIntrinsicHeight() / d.getIntrinsicWidth());
this.setMeasuredDimension(width, height);
} else {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
}
并像
一样实现它<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<this.is.packagename.DynamicImageView
android:id="@+id/grid_item_image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="3dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/grid_item_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/grid_item_image"
android:layout_centerHorizontal="true"
android:padding="4dp"
android:text="Medium Text"
android:textColor="@color/black"
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
通过这种方式,您将得到相同大小的imageview,以及指定的列数
<GridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/frameLayout1"
android:background="@color/white"
android:numColumns="3" >
</GridView>
如果您遇到任何实施问题,请向我询问
答案 1 :(得分:0)
将你的textview放在如下的linearlayout中,它可以解决你的问题
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="5dp" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="96dp"
android:layout_height="96dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="15dp"
android:src="@drawable/ic_launcher" >
</ImageView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView1"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:gravity="center_horizontal|center_vertical"
android:paddingTop="4dp"
android:singleLine="true"
android:text="TextView1"
android:layout_weight="1"
android:textSize="14dip" >
</TextView>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:text="TextView2" >
</TextView>
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:text="TextView3" >
</TextView>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/transparent" />
</LinearLayout>