java翻译到mono C#实现系列(2) mono实现GridView 横向滚动
群里的朋友问GridView 横向滚动怎么实现,我就百度了,参考http://blog.csdn.net/lonely_fireworks/article/details/7841134写了个mono版的.
本人菜鸟,请各位多多指点,不足之处,请斧正.没啥技术含量,就权当丰富下mono for android的小代码.
目录结构

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 = ; i < ; 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)( * size * density);
int itemWidth = (int)( * density);
LinearLayout.LayoutParams par = new LinearLayout.LayoutParams(allWidth, LinearLayout.LayoutParams.FillParent);
gridView.LayoutParameters = par;
gridView.SetColumnWidth(itemWidth);
gridView.SetHorizontalSpacing();
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
java翻译到mono C#实现系列(2) mono实现GridView 横向滚动的更多相关文章
- Android(java)学习笔记155:如何让你的GridView不再滚动
GridView显示不完整的原因是因为,他的外层也套用了一个滑动的控件,这个解决办法是:重写GridView,是控制GridView不能滚动,就是写一个类继承GridView 代码如下: publ ...
- Android(java)学习笔记98:如何让你的GridView不再滚动
1. 如何让你的GridView不再滚动: GridView显示不完整的原因是因为,他的外层也套用了一个滑动的控件,这个解决办法是:重写GridView,是控制GridView不能滚动,就是写一个类继 ...
- 【Xamarin挖墙脚系列:Mono项目的图标为啥叫Mono】
因为发起人大Boss :Miguel de lcaza 是西班牙人,喜欢猴子.................就跟Hadoop的创始人的闺女喜欢大象一样...................... 历 ...
- Java并发包源码学习系列:阻塞队列BlockingQueue及实现原理分析
目录 本篇要点 什么是阻塞队列 阻塞队列提供的方法 阻塞队列的七种实现 TransferQueue和BlockingQueue的区别 1.ArrayBlockingQueue 2.LinkedBloc ...
- [翻译svg教程]svg学习系列 开篇
目录 [翻译svg教程]svg学习系列 开篇 [翻译svg教程 ]svg 的坐标系统 [翻译svg教程]svg 中的g元素 [翻译svg教程]svg中矩形元素 rect [翻译svg教程]svg中的c ...
- java从入门到卖肠粉系列
java从入门到卖肠粉系列 注:本教程只是从JAVA基础开始,绝对不会跟公司有任何利益冲突,更不会出现一行公司项目的代码 QQ群:9547527 推荐用土豆,百度去上传太慢,百度云在线播放还要转码.. ...
- 【java集合框架源码剖析系列】java源码剖析之TreeSet
本博客将从源码的角度带领大家学习TreeSet相关的知识. 一TreeSet类的定义: public class TreeSet<E> extends AbstractSet<E&g ...
- 【java集合框架源码剖析系列】java源码剖析之HashSet
注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本.本博客将从源码角度带领大家学习关于HashSet的知识. 一HashSet的定义: public class HashSet&l ...
- 【java集合框架源码剖析系列】java源码剖析之TreeMap
注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本.本博客将从源码角度带领大家学习关于TreeMap的知识. 一TreeMap的定义: public class TreeMap&l ...
随机推荐
- mysql的.sql文件头部 /*!32312 IF NOT EXISTS*/;
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RE ...
- mdk3攻击实例
Authentication Flood,mdk3下参数为a: mdk3 mon0 a –a AP的MAC地址(BSSID) -c来对指定的频道进行攻击 -a固定bssid进行攻击 -s控制发包速率. ...
- [ThinkPHP] 比较标签 neq&nheq 与 PHP 中的 != 与 !== 出现的问题
1. 模板 > 内置标签 > 比较标签 控制器: $_data['list'] = [ 'dingo' , 'engo' , 'fengo' , 'gingo' , 'autoFill'= ...
- Oracle ERP Profile
1.配置系统 . 进入路径:SYSADMIN 登录,系统管理员--Profile--系统: 配置分类 配置文件 文件选项 内容 配置系统 ICX% ICX:日期显示样式 选择修改日期输 入格式(199 ...
- Lucene--FuzzyQuery与WildCardQuery(通配符)
FuzzyQuery: 创建索引: IndexWriter writer = new IndexWriter(path, new StandardAnalyzer(), false); writer. ...
- scvmm sdk之powershell(一)
shell表示计算机操作系统中的壳层,与之相对的是内核,内核不能与用户直接交互,而是通过shell为用户提供操作界面,shell分为两类,一种提供命令行界面,一种提供图形界面.windows powe ...
- LeeDUT个人WEB作品
*****目前大三前端狗一只,听说博客里写点记点能求OFFER***** 1.微云盘upan.oureda.cn 2013.10 微云盘是基于分布式系统.提供文件分享的校园存储站点,上传文件之后随即 ...
- h5页面宽度设置7.5rem
function ready() { var u = navigator.userAgent; var winW = document.documentElement.clientWidth; if ...
- jQuery--基本介绍与下载
本篇内容: 1.jquery学习内容 2.jquery下载,引用 3.使用顺序 4.版本 5.jquery对象与DOM对象转化 jQuery认识: jQuery学习内容 选择器 筛选器 样式操作 文本 ...
- 九、基础正则表达式BRE
1.重要性:简单的说正则表达式就是处理一套字符串的规则和方法,以行为单位对字符串进行处理. 运维工作中,会有大量的访问日志,错误日志,大数据学习正则表达式是不可少的. 2.linux正则表达式,主要是 ...