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 ...
随机推荐
- tp5和gateworer集成
第一步:安装thinkpph程序包 第二步:切换到根目录,使用composer require workerman/gateway-worker 安装Linux版本的gateway.(前提是你服务器安 ...
- 密码分析:使用 Ettercap 和 它的 ARP 毒化功能来嗅探流量
vim /etc/etterconf 将 ec_uid 和 ec_gid 改为 0 需要取消下面的 IPTABLES 行的注释.它在靠近文件末尾的 LINUX 一节 ettercap -G Shift ...
- git fatal:HttpRequestException encountered
网上查了一下发现是Github 禁用了TLS v1.0 and v1.1,必须更新Windows的git凭证管理器,才行. https://github.com/Microsoft/Git-Crede ...
- mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集
需求: 1.直接执行前端传来的任何sql语句,parameterType="String", 2.对于任何sql语句,其返回值类型无法用resultMap在xml文件里配置或者返回 ...
- XEvent--Demo--使用XEvent来捕获在数据库DB1上发生的锁请求和锁释放
--==============================================================--使用XEvent来捕获在数据库DB1上发生的锁请求和锁释放--=== ...
- sharepoint 2013 search configuration
在建立search application之前完成以下命令 $hostA = Get-SPEnterpriseSearchServiceInstance -Identity "WTCSPS0 ...
- Let it crash philosophy part II
Designing fault tolerant systems is extremely difficult. You can try to anticipate and reason about ...
- 467. Unique Substrings in Wraparound String
Consider the string s to be the infinite wraparound string of "abcdefghijklmnopqrstuvwxyz" ...
- Java - io输入输出流 --转换流
转换流 转换输出流 OutputStreamWriter: 说明: /* * OutputStreamWriter 这个类的作用 * 就是指定输出流的编码格式 * 这个类的构造方法 需要传递 一个输 ...
- 【BZOJ2440】[中山市选2011]完全平方数
题意描述 原题 一句话描述: 求第K个不是完全平方数的倍数的数. K≤$10^{9}$ ------------------------------------------ 题解: 首先,直接求第$k ...