當前位置:首頁 » 安卓系統 » androidgridview高度

androidgridview高度

發布時間: 2022-12-25 11:05:05

Ⅰ Android中如何讓一個GridView的顯示空間最多4行

  1. 如果你的Item的高度是固定的:

    可以通過固定GridView的高度來達到顯示4行的效果。當然,這個要動態計算,不超過四行,GridView的高度就是Item的高度乘以行數,超過四行,就是四行的高度。

  2. 如果你item的高度不是固定的:

  3. 需要動態獲取每個item的高度,然後再計算GridView的高度。

Ⅱ 為什麼android gridview只能顯示一行數據

因為在Android中,有這樣一個限制,兩ScrollView型的控制項不能相互嵌套。像ListView和GridView就都是ScrollView型的控制項。因為嵌套後,兩個ScrollView型控制項的滑動效果就喪失了,同時被嵌套控制項的高度也被限定為一行的高度。那我們還能不能嵌套兩個ScrollView型的控制項呢?肯定是可以的。方法有兩種:一是我們去需要自定義ListView或是GridView,並重寫其onMeasure()方法。如下:

public class NoScrollGridView extends GridView {
public NoScrollGridView(Context context) {
super(context);
}
public NoScrollGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
ListView也同理。
還有一種方法是我們重新動態地計算我們現在需要的高度。在我們調用Adapter的時候,我們獲得現在這個時候的GridView有多少個,單個GridView的高度,然後計算總高度。具體代碼如下:

/**
* 重新計算listView高度
* @param listView
*/
public static void (ListView listView) {
// 獲取ListView對應的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}

int totalHeight = 0;
for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回數據項的數目
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0); // 計運算元項View 的寬高
totalHeight += listItem.getMeasuredHeight(); // 統計所有子項的總高度
}

ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
// listView.getDividerHeight()獲取子項間分隔符佔用的高度
// params.height最後得到整個ListView完整顯示需要的高度
listView.setLayoutParams(params);
}
在我們setAdapter()的之前,我們調用上面的方法,如(accomplishmentStateListView);
因為我是在ListView中嵌套GridView,所以重新計算GridView的總高度的時候,要放在setAdapter(...GridViewAdapter)這個BaseAdapter的衍生類里。代碼如下:

/**
* 計算gridview高度
* @param gridView
*/
public static void (GridView gridView) {
// 獲取GridView對應的Adapter
ListAdapter listAdapter = gridView.getAdapter();
if (listAdapter == null) {
return;
}
int rows;
int columns = 0;
int horizontalBorderHeight = 0;
Class<?> clazz = gridView.getClass();
try {
// 利用反射,取得每行顯示的個數
Field column = clazz.getDeclaredField("mRequestedNumColumns");
column.setAccessible(true);
columns = (Integer) column.get(gridView);
// 利用反射,取得橫向分割線高度
Field horizontalSpacing = clazz
.getDeclaredField("mRequestedHorizontalSpacing");
horizontalSpacing.setAccessible(true);
horizontalBorderHeight = (Integer) horizontalSpacing.get(gridView);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
// 判斷數據總數除以每行個數是否整除。不能整除代表有多餘,需要加一行
if (listAdapter.getCount() % columns > 0) {
rows = listAdapter.getCount() / columns + 1;
} else {
rows = listAdapter.getCount() / columns;
}
int totalHeight = 0;
for (int i = 0; i < rows; i++) { // 只計算每項高度*行數
View listItem = listAdapter.getView(i, null, gridView);
listItem.measure(0, 0); // 計運算元項View 的寬高
totalHeight += listItem.getMeasuredHeight(); // 統計所有子項的總高度
}
ViewGroup.LayoutParams params = gridView.getLayoutParams();
params.height = totalHeight + horizontalBorderHeight * (rows - 1);// 最後加上分割線總高度
gridView.setLayoutParams(params);
}
這樣我們就可以在ListView中添加GridView了。。。
註:兩個SrcollView型的控制項可以是:

<ListView, GridView>;

<GridView,ListView>;

<ListView,ListView>;

<GridView, GridView>;

<ListView, ScrollView>;

<ScrollView,ListView>;

<GridView, ScrollView>;

<ScrollView, GridView>;

<ScrollView, ScrollView>;

... ...

Ⅲ android gridview的remove view at方法怎麼用啊

ListView想要刪除View的話,只需要刪除View對應的數據,然後調用ListView綁定的Adapter的NotifyDataChanged方法,通知ListView重繪即可!

Ⅳ 怎樣動態設置GridView的寬和高(Android)

以下兩種方式都可以做到:

一、在xml布局文件中設置,wrap_content即表示根據gridView的內容自使用寬高,代碼如下:

android:layout_width="wrap_content"
android:layout_height="wrap_content"

二、在代碼中動態設置,可以在對gridview賦值之後,計算gridview的寬高,然後進行設置:

java">intheight=20;//此處的高度需要動態計算		
intwidth=30;//此處的寬度需要動態計算
LinearLayout.LayoutParamslinearParams=newLayoutParams(width,height);
gridview.setLayoutParams(linearParams);//使設置好的布局參數應用到控制項


需要注意的是:如果你的gridview是嵌套在ScrollView中,那麼,你需要重寫gridview控制項,不然gridview只顯示一行的問題(即高度不夠),具體重寫方式,可以參考下面代碼:

/**
*@authorhnbcinfo
*自定義GridView控制項,解決在ListView或ScrollView中使用GridView導致GridView顯示不全的問題
*當前應用:時間軸中,圖片顯示
*/
{
publicGridViewForScrollView(Contextcontext,AttributeSetattrs){
super(context,attrs);
}

publicGridViewForScrollView(Contextcontext){
super(context);
}

publicGridViewForScrollView(Contextcontext,AttributeSetattrs,intdefStyle){
super(context,attrs,defStyle);
}

@Override
publicvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){

intexpandSpec=MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec,expandSpec);
}
}

Ⅳ 安卓gridview的item高度不同導致重疊,怎樣解決

自定義GridView以解決ScrollView嵌套Android自身GridView出現的疑難問題 Android開發中偶爾會遇到ScrollView嵌套GridView情景,但是谷歌官網是不推薦這種方式的,因為他們都有滾動條,嵌套使用會有沖突,無奈只能另謀他路,自定義個仿GridView的控制項 1.定義attrs.xml文件 <declare-styleable name=「

Ⅵ android的gridview 怎麼控制其高度

1,控制其控制項的總體高度,可以通過布局直接設置layout_height,也可以動態賦值給他,但我相信樓主問的不是這個。
2,控制每個單元的高度。由於gridview沒有直接set單元高度的函數,而gridview是根據adapter動態生成的,所以一般在adapter的getView方法中得到(該方法返回的View的高度),在這里處理即可。

Ⅶ android gridview每個item高度寬度都是相同的,如何實現第一個item高度為其他的

你在getview裡面給每個view設置setLayoutParamas 比如第一個item的高度是100 後面的item你直接設置成50就可以了

Ⅷ 怎麼修改gridview元素的高度自適應填滿gridview-Android開發問答

gridview 布局
android:layout_marginTop="10dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:numColumns="2"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:background="@android:color/white"

熱點內容
如何修改網銀U盾密碼 發布:2025-04-09 13:30:40 瀏覽:195
安卓渠道服怎麼更換賬號 發布:2025-04-09 13:29:54 瀏覽:547
linux讀取文件c 發布:2025-04-09 13:29:44 瀏覽:326
python字元串追加 發布:2025-04-09 13:26:48 瀏覽:795
學之書資料庫 發布:2025-04-09 13:26:07 瀏覽:638
粉碎資料庫 發布:2025-04-09 13:21:02 瀏覽:700
線上編程價格 發布:2025-04-09 13:01:57 瀏覽:324
和平精英里k層的密室密碼是多少 發布:2025-04-09 12:55:05 瀏覽:707
關掉加密 發布:2025-04-09 12:50:46 瀏覽:892
sql資料庫導出表結構 發布:2025-04-09 12:50:02 瀏覽:176