zoukankan      html  css  js  c++  java
  • java翻译到mono C#实现系列(2) mono实现GridView 横向滚动

    群里的朋友问GridView 横向滚动怎么实现,我就百度了,参考http://blog.csdn.net/lonely_fireworks/article/details/7841134写了个mono版的.

    本人菜鸟,请各位多多指点,不足之处,请斧正.没啥技术含量,就权当丰富下mono for android的小代码.

    目录结构

    QQ图片20130804154215

    activity_main.axml 代码:

    <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
            <HorizontalScrollView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:scrollbars="none" >
    
                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal" >
                    
                    <GridView
                        android:id="@+id/gridview"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:columnWidth="90dp"
                        android:stretchMode="columnWidth"
                        >
                    </GridView>
                </LinearLayout>
            </HorizontalScrollView>
        </LinearLayout>

    gridview_item.axml 代码:

    <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    
            <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:background="#00ff00" />
    
            <TextView
                android:id="@+id/item_textview"
                android:layout_width="100dp"
                android:layout_height="20dp"
                android:gravity="center"
                android:text="TextView"
                />
    
        </LinearLayout>

    Activity1.cs 代码:

    using System;
    
    using Android.App;
    using Android.Content;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Android.OS;
    using Android.Util;
    using System.Collections.Generic;
    using System.Collections;
    //GridView 横向滚动
    //参考http://blog.csdn.net/lonely_fireworks/article/details/7841134
    namespace AndroidApplication1
    {
        [Activity(Label = "AndroidApplication1", MainLauncher = true, Icon = "@drawable/icon")]
        public class Activity1 : Activity
        {
            private GridView gridView;
            private LayoutInflater inflater;
            private IList<string> dataList = new List<string>();
    
            protected override void OnCreate(Bundle savedInstanceState)
            {
                base.OnCreate(savedInstanceState);
    
                // Set our view from the "main" layout resource
                SetContentView(Resource.Layout.activity_main);
    
                gridView = FindViewById<GridView>(Resource.Id.gridview);
                for (int i = 0; i < 10; i++)
                {
                    dataList.Add("测试" + i);
                }
                inflater = (LayoutInflater)this.GetSystemService(Context.LayoutInflaterService);
                GridViewAdapter adapter = new GridViewAdapter(this, dataList);
                gridView.Adapter = adapter;
                int size = dataList.Count;
                DisplayMetrics dm = new DisplayMetrics();
                WindowManager.DefaultDisplay.GetMetrics(dm);
                float density = dm.Density;
                int allWidth = (int)(110 * size * density);
                int itemWidth = (int)(100 * density);
                LinearLayout.LayoutParams par = new LinearLayout.LayoutParams(allWidth, LinearLayout.LayoutParams.FillParent);
                gridView.LayoutParameters = par;
                gridView.SetColumnWidth(itemWidth);
                gridView.SetHorizontalSpacing(10);
                gridView.SetNumColumns(size);
            }
    
            public override bool OnCreateOptionsMenu(IMenu menu)
            {
                MenuInflater.Inflate(Resource.Layout.activity_main, menu);
                return true;
            }
            public class GridViewAdapter : BaseAdapter
            {
                private Activity context = null;
                public IList<string> dataList = null;
    
                /// <summary>
                /// 默认构造器
                /// </summary>
                public GridViewAdapter()
                    : base()
                {
    
                }
    
                /// <summary>
                /// 带参构造器
                /// </summary>
                /// <param name="context"></param>
                /// <param name="list"></param>
                public GridViewAdapter(Activity context, IList<string> dataList)
                    : base()
                {
                    this.context = context;
                    this.dataList = dataList;
                }
    
                public override int Count
                {
                    get
                    {
                        return dataList.Count;
                    }
                }
    
                public override long GetItemId(int position)
                {
                    return position;
                }
    
                public override Java.Lang.Object GetItem(int position)
                {
                    return position;
                }
    
                public override View GetView(int position, View convertView, ViewGroup parent)
                {
                    convertView = context.LayoutInflater.Inflate(Resource.Layout.gridview_item, null);
                    TextView textView = (TextView)convertView
                                        .FindViewById(Resource.Id.item_textview);
                    String str = dataList[position];
                    textView.SetText(dataList[position], TextView.BufferType.Normal);
                    return convertView;
                }
            }
        }
    }

    原java版实现 代码:

    public class MainActivity extends Activity
    {
    
        private GridView gridView;
        private LayoutInflater inflater;
        private List<String> dataList = new ArrayList<String>();
    
        //    @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            gridView = (GridView) this.findViewById(R.id.gridview);
            for (int i = 0; i < 10; i++)
            {
                dataList.add("测试" + i);
            }
            inflater = (LayoutInflater) this
                       .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            GridViewAdapter adapter = new GridViewAdapter();
            gridView.setAdapter(adapter);
            int size = dataList.size();
            DisplayMetrics dm = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(dm);
            float density = dm.density;
            int allWidth = (int) (110 * size * density);
            int itemWidth = (int) (100 * density);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                allWidth, LinearLayout.LayoutParams.FILL_PARENT);
            gridView.setLayoutParams(params);
            gridView.setColumnWidth(itemWidth);
            gridView.setHorizontalSpacing(10);
            gridView.setStretchMode(GridView.NO_STRETCH);
            gridView.setNumColumns(size);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu)
        {
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }
    
        final class GridViewAdapter extends BaseAdapter
        {
    
            @Override
            public int getCount()
            {
                return dataList.size();
            }
    
            @Override
            public Object getItem(int position)
            {
                return dataList.get(position);
            }
    
            @Override
            public long getItemId(int position)
            {
                return position;
            }
    
            @Override
            public View getView(int position, View convertView, ViewGroup parent)
            {
                convertView = inflater.inflate(R.layout.gridview_item, null);
                TextView textView = (TextView) convertView
                                    .findViewById(R.id.item_textview);
                String str = dataList.get(position);
                textView.setText(str);
                return convertView;
            }
    
        }
    }

    源码下载: http://www.400gb.com/file/26907440

  • 相关阅读:
    自定义文书思路
    传输
    Netty的组件和设计
    第一款Netty应用程序
    Netty异步和事件驱动
    初识MQTT
    TCP/IP协议分层模型
    uni原生插件的开发(安卓)
    uniapp离线打包记录
    日常问题处理:Linux通过设备名称如何查看硬盘SN
  • 原文地址:https://www.cnblogs.com/laxknight/p/3236416.html
Copyright © 2011-2022 走看看