ListView嵌套GridView顯示不完整的解決方案


         轉載注明出處http://blog.csdn.net/allen315410/article/details/40152987

       近期在做項目中,有個模塊須要在ListView中嵌套一個GridView制作“九宮格”的效果。結果GridView上的子元素只顯示了一行。沒有顯示完整的說。例如以下圖:


       事實上這個ListView上一共須要顯示的是6張圖片。也就是說還有3張圖片須要在下一行顯示的,結果GridView沒有顯示全然,這個問題非常奇怪。可是已經找到解決的方案,就是重寫一個GridView。做一個自己定義的GridView,然后重寫GridView的onMeasure(int widthMeasureSpec, int heightMeasureSpec)的方法,將GridView又一次測量,而且指定GridView的新的高度。代碼例如以下:

import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;

/**
 * 自己定義的“九宮格”——用在顯示帖子詳情的圖片集合 
 * 解決的問題:GridView顯示不全。僅僅顯示了一行的圖片,比較奇怪。嘗試重寫GridView來解決
 * 
 * @author lichao
 * @since 2014-10-16 16:41
 * 
 */
public class SodukuGridView extends GridView {

	public SodukuGridView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}

	public SodukuGridView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}

	public SodukuGridView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		// TODO Auto-generated method stub
		int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
		super.onMeasure(widthMeasureSpec, expandSpec);
	}

}
下面是布局文件:

<com.fc62.raisebook.view.SodukuGridView
        android:id="@+id/gridview"
        android:layout_width="220dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_question_content"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="5dp"
        android:columnWidth="70dp"
        android:gravity="center"
        android:horizontalSpacing="2.5dp"
        android:numColumns="3"
        android:stretchMode="columnWidth"
        android:verticalSpacing="2.5dp" >
    </com.fc62.raisebook.view.SodukuGridView>

然后就拿這個自己定義的GridView當做普通的GridView一樣使用就可以。

問題攻克了:


好了,這就是解決方式,不知道有沒有更好的,期待一起探討學習!



版權聲明:本文博客原創文章。博客,未經同意,不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM