国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android使用GridView實現橫向滾動效果

2019-10-21 21:46:37
字體:
來源:轉載
供稿:網友

本文實例為大家分享了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 效果如下: 

Android,GridView,橫向滾動

模擬器Nexus 9 API 18 2048x1536: xhdpi 效果如下:

Android,GridView,橫向滾動

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使用,建議先看懂后,再根據實際情況進行更改。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 晋江市| 措美县| 鄂托克旗| 巧家县| 兰坪| 南投市| 边坝县| 安多县| 广昌县| 马边| 东乡县| 西吉县| 西华县| 当雄县| 吴旗县| 边坝县| 丁青县| 河南省| 寻乌县| 丰城市| 香河县| 和硕县| 广昌县| 桃园市| 印江| 泰和县| 绥江县| 商水县| 绥德县| 永宁县| 安达市| 崇阳县| 于田县| 渭南市| 英山县| 巴林右旗| 将乐县| 霍城县| 丹阳市| 陇川县| 错那县|