Android 横向列表GridView 实现横向滚动

浅浅的花香味﹌ 2022-06-18 02:15 506阅读 0赞

Android 横向列表GridView 实现横向滚动

Android 横向列表实现,可左右滑动,如下图

051716219832539.jpg

1.主界面布局代码:activity_main.xml

  1. a.包裹HorizontalScrollView控件是GirdView横向滚动的基本条件
  2. b.GirdView外包裹LinearLayoutjava代码中参数设置的必要条件

复制代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <HorizontalScrollView
  7. android:layout_width="fill_parent"
  8. android:layout_height="wrap_content"
  9. android:layout_margin="5dp" >
  10. <LinearLayout
  11. android:layout_width="wrap_content"
  12. android:layout_height="fill_parent"
  13. android:layout_margin="10dp" >
  14. <GridView
  15. android:id="@+id/grid"
  16. android:layout_width="fill_parent"
  17. android:layout_height="fill_parent"
  18. android:gravity="center"
  19. android:numColumns="auto_fit"
  20. android:stretchMode="spacingWidthUniform" >
  21. </GridView>
  22. </LinearLayout>
  23. </HorizontalScrollView>
  24. </LinearLayout>

复制代码

2.主界面GridView列表子项布局文件:list_item.xml










1


2


3


4


5


6


7


8


9


10


11


12


13



<!—?xml version=
“1.0” 
encoding=
“utf-8”
?—>


<linearlayout xmlns:android=
“http://schemas.android.com/apk/res/android“ 
android:id=
“@+id/itemlayout” 
android:layout_width=
“wrap_content” 
android:layout_height=
“wrap_content” 
android:orientation=
“vertical”
>


 


    
<imageview android:id=
“@+id/ItemImage” 
android:layout_width=
“80.0dip” 
android:layout_height=
“80.0dip” 
android:layout_gravity=
“center_horizontal” 
android:src=
“@drawable/china”
>


    
</imageview>


 


    
<textview android:id=
“@+id/tvCity” 
android:layout_width=
“wrap_content” 
android:layout_height=
“wrap_content” 
android:layout_gravity=
“center_horizontal” 
android:text=
“Title” 
android:textcolor=
“#000000”
>


    
</textview>


 


    
<textview android:id=
“@+id/tvCode” 
android:layout_width=
“wrap_content” 
android:layout_height=
“wrap_content” 
android:layout_gravity=
“center_horizontal” 
android:text=
“Info” 
android:textcolor=
“#000000”
>


    
</textview>


 


</linearlayout>

3.java实现代码:MainActivity.java

复制代码

  1. package com.example.horizontallistview;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.app.Activity;
  5. import android.content.Context;
  6. import android.os.Bundle;
  7. import android.util.DisplayMetrics;
  8. import android.view.LayoutInflater;
  9. import android.view.View;
  10. import android.view.ViewGroup;
  11. import android.widget.BaseAdapter;
  12. import android.widget.GridView;
  13. import android.widget.LinearLayout;
  14. import android.widget.RelativeLayout;
  15. import android.widget.TextView;
  16. /***
  17. *
  18. * @author ymw
  19. * @summary 博客地址欢迎访问: http://www.cnblogs.com/_ymw
  20. */
  21. public class MainActivity extends Activity {
  22. List<CityItem> cityList;
  23. RelativeLayout itmel;
  24. GridView gridView;
  25. @Override
  26. protected void onCreate(Bundle savedInstanceState) {
  27. super.onCreate(savedInstanceState);
  28. setContentView(R.layout.activity_main);
  29. LayoutInflater layoutInflater = (LayoutInflater) this
  30. .getSystemService("layout_inflater");
  31. gridView = (GridView) findViewById(R.id.grid);
  32. setData();
  33. setGridView();
  34. }
  35. /**设置数据*/
  36. private void setData() {
  37. cityList = new ArrayList<CityItem>();
  38. CityItem item = new CityItem();
  39. item.setCityName("深圳");
  40. item.setCityCode("0755");
  41. cityList.add(item);
  42. item = new CityItem();
  43. item.setCityName("上海");
  44. item.setCityCode("021");
  45. cityList.add(item);
  46. item = new CityItem();
  47. item.setCityName("广州");
  48. item.setCityCode("020");
  49. cityList.add(item);
  50. item = new CityItem();
  51. item.setCityName("北京");
  52. item.setCityCode("010");
  53. cityList.add(item);
  54. item = new CityItem();
  55. item.setCityName("武汉");
  56. item.setCityCode("027");
  57. cityList.add(item);
  58. item = new CityItem();
  59. item.setCityName("孝感");
  60. item.setCityCode("0712");
  61. cityList.add(item);
  62. cityList.addAll(cityList);
  63. }
  64. /**设置GirdView参数,绑定数据*/
  65. private void setGridView() {
  66. int size = cityList.size();
  67. int length = 100;
  68. DisplayMetrics dm = new DisplayMetrics();
  69. getWindowManager().getDefaultDisplay().getMetrics(dm);
  70. float density = dm.density;
  71. int gridviewWidth = (int) (size * (length + 4) * density);
  72. int itemWidth = (int) (length * density);
  73. LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
  74. gridviewWidth, LinearLayout.LayoutParams.FILL_PARENT);
  75. gridView.setLayoutParams(params); // 设置GirdView布局参数,横向布局的关键
  76. gridView.setColumnWidth(itemWidth); // 设置列表项宽
  77. gridView.setHorizontalSpacing(5); // 设置列表项水平间距
  78. gridView.setStretchMode(GridView.NO_STRETCH);
  79. gridView.setNumColumns(size); // 设置列数量=列表集合数
  80. GridViewAdapter adapter = new GridViewAdapter(getApplicationContext(),
  81. cityList);
  82. gridView.setAdapter(adapter);
  83. }
  84. /**GirdView 数据适配器*/
  85. public class GridViewAdapter extends BaseAdapter {
  86. Context context;
  87. List<CityItem> list;
  88. public GridViewAdapter(Context _context, List<CityItem> _list) {
  89. this.list = _list;
  90. this.context = _context;
  91. }
  92. @Override
  93. public int getCount() {
  94. return list.size();
  95. }
  96. @Override
  97. public Object getItem(int position) {
  98. return list.get(position);
  99. }
  100. @Override
  101. public long getItemId(int position) {
  102. return position;
  103. }
  104. @Override
  105. public View getView(int position, View convertView, ViewGroup parent) {
  106. LayoutInflater layoutInflater = LayoutInflater.from(context);
  107. convertView = layoutInflater.inflate(R.layout.list_item, null);
  108. TextView tvCity = (TextView) convertView.findViewById(R.id.tvCity);
  109. TextView tvCode = (TextView) convertView.findViewById(R.id.tvCode);
  110. CityItem city = list.get(position);
  111. tvCity.setText(city.getCityName());
  112. tvCode.setText(city.getCityCode());
  113. return convertView;
  114. }
  115. }
  116. public class CityItem {
  117. private String cityName;
  118. private String cityCode;
  119. public String getCityName() {
  120. return cityName;
  121. }
  122. public void setCityName(String cityName) {
  123. this.cityName = cityName;
  124. }
  125. public String getCityCode() {
  126. return cityCode;
  127. }
  128. public void setCityCode(String cityCode) {
  129. this.cityCode = cityCode;
  130. }
  131. }
  132. }

复制代码

4.项目代码如下链接:

http://files.cnblogs.com/_ymw/HorizontalListView_%E5%8D%9A%E5%AE%A2%E9%99%84%E4%BB%B6.rar

发表评论

表情:
评论列表 (有 0 条评论,506人围观)

还没有评论,来说两句吧...

相关阅读