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

首頁 > 系統 > Android > 正文

Android GridView實現橫向列表水平滾動

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

本文實例為大家分享了Android GridView實現橫向列表水平滾動的具體代碼,供大家參考,具體內容如下

有時候根據項目需要,使用可橫向滑動的GridView。僅以該文記錄一下,畢竟沒什么技術含量。 

1.主界面布局代碼:activity_main.xml。設置android:numColumns=”auto_fit”是因為可以不定項的添加子項。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:orientation="vertical">  <HorizontalScrollView    android:layout_width="fill_parent"    android:layout_height="wrap_content">    <LinearLayout      android:layout_width="wrap_content"      android:layout_height="fill_parent">      <view.gridviewdemo.AblGridView        android:id="@+id/id_gridview_home"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:gravity="center"        android:numColumns="auto_fit"        android:scrollbars="none"        android:stretchMode="spacingWidthUniform"/>    </LinearLayout>  </HorizontalScrollView></LinearLayout>

2.主界面GridView列表子項布局文件:home_gridview_item.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="wrap_content"  android:layout_gravity="center"  android:layout_margin="0dp"  android:background="#ffffff"  android:orientation="vertical">  <ImageView    android:id="@+id/id_iv_item"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_gravity="center_horizontal"    android:layout_marginTop="10dp"    android:gravity="center" />  <TextView    android:id="@+id/id_tv_item"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_gravity="center_horizontal"    android:layout_marginTop="5dp"    android:gravity="center"    android:paddingBottom="10dp"    android:text="標題文字"    android:textSize="12sp" /></LinearLayout>

3.java實現代碼:MainActivity.java

 

import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.DisplayMetrics;import android.widget.GridView;import android.widget.LinearLayout;public class MainActivity extends AppCompatActivity {  AblGridView id_gridview_home;  private int[] imgs = {R.mipmap.index1_nav_xc, R.mipmap.index1_nav_xc,      R.mipmap.index1_nav_xc, R.mipmap.index1_nav_xc, R.mipmap.index1_nav_xc};  private String[] titles = new String[]{"子項1", "子項2","子項3","子項4", "子項5"};  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    id_gridview_home= (AblGridView) findViewById(R.id.id_gridview_home);    setGridView();  }  /**設置GirdView參數,綁定數據*/  private void setGridView() {    int size = imgs.length;    int length = 100;    DisplayMetrics dm = new DisplayMetrics();    getWindowManager().getDefaultDisplay().getMetrics(dm);    float density = dm.density;    int gridviewWidth = (int) (size * (length + 4) * density);    int itemWidth = (int) (length * density);    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(        gridviewWidth, LinearLayout.LayoutParams.FILL_PARENT);    id_gridview_home.setLayoutParams(params); // 設置GirdView布局參數,橫向布局的關鍵    id_gridview_home.setColumnWidth(itemWidth); // 設置列表項寬    id_gridview_home.setHorizontalSpacing(5); // 設置列表項水平間距    id_gridview_home.setStretchMode(GridView.NO_STRETCH);    id_gridview_home.setNumColumns(size); // 設置列數量=列表集合數    AblGridViewBaseAdapter adapter = new AblGridViewBaseAdapter(this,imgs,titles);    id_gridview_home.setAdapter(adapter);  }}

4.自定義控件:AblGridView

 

import android.content.Context;import android.util.AttributeSet;import android.widget.GridView;/** * 繼承GridView控件,為了更友好的顯示 * 解決在scrollview中只顯示第一行數據的問題 */public class AblGridView extends GridView {  public AblGridView(Context context, AttributeSet attrs) {    super(context, attrs);  }  public AblGridView(Context context) {    super(context);  }  public AblGridView(Context context, AttributeSet attrs, int defStyle) {    super(context, attrs, defStyle);  }  @Override  public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {    int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,        MeasureSpec.AT_MOST);    super.onMeasure(widthMeasureSpec, expandSpec);  }}

5.重寫適配器:AblGridViewBaseAdapter

import android.content.Context;import android.util.SparseArray;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;/** * 重寫適配器 */public class AblGridViewBaseAdapter extends BaseAdapter {  private Context mContext;  private String[] Title;//顯示標題數組  private int[] Imgs;//顯示圖標數組  public AblGridViewBaseAdapter(Context mContext,int[] imgs ,String[] titles) {    super();    this.mContext = mContext;    Imgs = imgs;  }  @Override  public int getCount() {    return Title.length;  }  @Override  public Object getItem(int position) {    return position;  }  @Override  public long getItemId(int position) {    return position;  }  @Override  public View getView(int position, View convertView, ViewGroup parent) {    convertView = loadHomeHyOrYs(position, convertView, parent);    return convertView;  }  /**   * 加載會員或醫生的功能列表   */  public View loadHomeHyOrYs(int position, View convertView, ViewGroup parent) {    if (convertView == null) {      convertView = LayoutInflater.from(mContext).inflate(          R.layout.home_gridview_item, parent, false);    }    TextView tv = get(convertView, R.id.id_tv_item);    ImageView iv = get(convertView, R.id.id_iv_item);    iv.setBackgroundResource(Imgs[position]);    tv.setText(Title[position]);    return convertView;  }  public <T extends View> T get(View view, int id) {    SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();    if (viewHolder == null) {      viewHolder = new SparseArray<View>();      view.setTag(viewHolder);    }    View childView = viewHolder.get(id);    if (childView == null) {      childView = view.findViewById(id);      viewHolder.put(id, childView);    }    return (T) childView;  }}

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 澄城县| 桦川县| 崇仁县| 延寿县| 东乡族自治县| 尚义县| 太仓市| 泸水县| 望城县| 晋宁县| 平遥县| 巴里| 皋兰县| 堆龙德庆县| 会宁县| 昔阳县| 微山县| 镇原县| 五家渠市| 宁安市| 通化县| 吉安县| 昌乐县| 合阳县| 卢湾区| 张家口市| 清远市| 当涂县| 依兰县| 靖远县| 临漳县| 徐汇区| 宜章县| 高台县| 灵丘县| 苏尼特右旗| 临汾市| 岳西县| 鄄城县| 沂水县| 吉安县|