您好,登錄后才能下訂單哦!
本文實例為大家分享了Android使用GridView實現橫向滾動效果的具體代碼,供大家參考,具體內容如下
第一次做橫向滑動,看了一些列子,基本就2總:HorizontalListView和GridView。考慮的了下選擇用比較熟的GridView,并且在2種方案都使用過,根據本人實際情況,采用了更適合的GridView。
也希望看過這篇博客的大神們,能指點下HorizontalListView和GridView兩個方案的優缺點。
思路:
XML界面:用HorizontalScrollView + GridView 配合使用。
Java代碼部分:和普通GridView使用基本一致,但需要手動設置GridView的width以及Item的Width等。
筆者實際情況是:左右滑動,1行以4個為基準。
在不同尺寸的平板下,呈現都是一個界面4個Item。
先上效果圖
模擬器Nexus 10 API 18 2560x1600: xhdpi 效果如下:
模擬器Nexus 9 API 18 2048x1536: xhdpi 效果如下:
XML代碼
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <HorizontalScrollView android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp"> <GridView android:id="@+id/dev_gv" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:numColumns="auto_fit" android:stretchMode="spacingWidthUniform"> </GridView> </LinearLayout> </HorizontalScrollView> </LinearLayout>
android:numColumns=”auto_fit” –>列數量自適應
android:stretchMode=”spacingWidthUniform” –>Item間距均勻
Java
這里是參考了網上他人的代碼后,更具自己的實際情況進行更改,并附上了詳細的注釋。
/** * 水平GridView設置 * @param size Item總數 * @param gridView 需要設置的GridView */ private void setHorizontalGridView(int size, GridView gridView) { int length = size; //一個界面要顯示的幾個Item int AnInterfaceNum=4; //每個Item的間距(注:如果間距過大,但屏幕寬度不夠,多出的部份會被無視) int spcing = 30; //計算當個Item的寬度( 屏幕寬度 減去- 一個屏幕下要總item數量的間距之和 最后除/ 單個屏幕要顯示幾個Item) int itemWidth = ((getResources().getDisplayMetrics().widthPixels) - ((AnInterfaceNum - 1) * spcing)) / AnInterfaceNum; //這里筆者并不理解為什么網上有些代碼這里需要用到屏幕密度,但會影響我最終效果,就注釋掉 // float density = dm.density; // // int gridviewWidth = (int) (size * (length) * density)+((size-1)*30); // int itemWidth = (int) ((length) * density); //筆者更具實際情況改寫如下: //GridView總長度 int gridviewWidth = (length * (itemWidth)) + ((length - 1) * spcing); @SuppressWarnings("deprecation") LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( gridviewWidth, LinearLayout.LayoutParams.MATCH_PARENT); gridView.setLayoutParams(params); // 設置GirdView布局參數,橫向布局的關鍵 gridView.setColumnWidth(itemWidth); // 設置列表項寬 gridView.setHorizontalSpacing(spcing); // 設置列表項水平間距 gridView.setStretchMode(GridView.NO_STRETCH); gridView.setNumColumns(length); // 設置列數量=列表集合數 }
這塊代碼是核心部分,并不建議直接copy使用,建議先看懂后,再根據實際情況進行更改。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。