前不久网上有人问如何在java代码里根据屏幕宽度动态设定每一行的单元格数。百度了好久,没结果,结果自己认真分析,实现了这个功能。
gridview可以在xml布局里面设定每一个单元的宽度,以及手机屏幕的宽度来确定,一行能够容纳的单元格数。怎样在java代码里,动态设定一行的单元格数呢?
package com.lin.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.WindowManager; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.GridView; import android.widget.SimpleAdapter; import android.widget.Toast; public class SecondActivity extends Activity{ GridView gridView; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); List<HashMap<String,Object>> list=new ArrayList<HashMap<String,Object>>(); for(int i=0;i<MyProject001Activity.size;i++){ HashMap<String, Object> mp= new HashMap<String,Object>(); mp.put("image", R.drawable.ic_launcher); mp.put("text","第"+(i+1)+"关"); list.add(mp); } SimpleAdapter simpleAdapter=new SimpleAdapter(getApplicationContext(), list, R.layout.item, new String[]{ "image","text" }, new int[]{ R.id.imageView,R.id.tv }); gridView.setAdapter(simpleAdapter); gridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), arg2, 3).show(); } }); } private void init() { // TODO Auto-generated method stub gridView=(GridView) findViewById(R.id.GridView); WindowManager wm = this.getWindowManager();//获取WindowManager int width = wm.getDefaultDisplay().getWidth();//获取到屏幕宽度 double width2=width/Math.sqrt(MyProject001Activity.size);//用屏幕的宽度比上单元格的个数,就是每一个单元格的宽度 System.out.println("width"+width); System.out.println("width2"+width2); gridView.setColumnWidth((int) width2);//gridview动态设置每一个单元格的宽度 } }
second.xml
<?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" > <GridView android:id="@+id/GridView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="auto_fit" android:stretchMode="columnWidth" android:gravity="center"> </GridView> </LinearLayout>
MyProject001Activity.java
package com.lin.test; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MyProject001Activity extends Activity { /** Called when the activity is first created. */ EditText tv; public static int size=0; //定义静态变量,作为设定的每一行的单元格数。 //其实可以通过界面跳转intent传值,这里我简化了 Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub final int bianchang= Integer.parseInt(tv.getText().toString()); size=bianchang*bianchang; startActivity(new Intent(MyProject001Activity.this,SecondActivity.class)); } }); } private void init() { // TODO Auto-generated method stub tv= (EditText) findViewById(R.id.tv); button= (Button) findViewById(R.id.button); } } main.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="match_parent" android:orientation="vertical" > <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/tv" android:hint="正方形的边长?" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/button" android:text="提交" /> </LinearLayout>
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="match_parent" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:layout_gravity="center" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv" android:layout_gravity="center" /> </LinearLayout>
效果图:
在界面A,输入5,点击提交
在界面B保证长行列的单元格数相同
最后别忘了清单文件
<activity android:name=".SecondActivity"/>
相关推荐
当数据源中有重复的列值时,我们可以通过设置`RowDataBound`事件来检查相邻行的单元格内容,并根据内容是否相同进行合并。以下是一个基本的示例: ```csharp protected void GridView1_RowDataBound(object sender,...
当我们的应用需要适应不同屏幕尺寸和分辨率时,根据屏幕宽度动态设置GridView的列数变得尤为重要。这样可以确保数据在各种设备上都有良好的显示效果,提供优秀的用户体验。 首先,我们需要了解GridView的基本用法。...
在标题“GridView合并单元格”中,这个话题主要探讨的是如何在GridView中实现单元格的合并。 合并GridView的单元格并非简单的HTML操作,因为GridView在服务器端自动生成表格(HTML `<table>`)。实际上,我们是在...
在Windows Presentation Foundation (WPF) 中,GridView 是DataGrid控件的一种视图模式,它用于显示数据集合,并且常用于创建表格布局。本教程将详细解释如何在WPF的GridView中实现单元格合并,这对于创建复杂的报表...
实现GridView的横向滑动,默认为纵向滑动,主要目标实现GridView中两个或多个相邻item的合并效果,满足项目的UI设计,同时解决了item选中放大被其他item遮挡的问题;用法简单,一目了然,可供参考
编辑GridView单元格 说明:单元格获取焦点,则单元格处于编辑状态,单元格失去焦点,则立即更新数据库。采用非Ajax技术。 1、访问Session中的数据 这个例子是用户使用Session中数据。鼠标点击编辑GridView单元格。...
总结来说,GridView单元格合并是.NET Web开发中的一个重要技巧,它能够帮助我们更有效地展示复杂的数据结构,提供更清晰的视图。熟练掌握这一技术,可以提升用户体验,让数据展示更加专业和直观。
在Android开发中,GridView是一种非常常用的布局控件,它允许我们以网格的形式展示数据,通常用于创建图片库、菜单选项或者任何需要多行多列显示的界面。在本实例中,我们将深入探讨如何使用GridView来构建一个基本...
在Android开发中,ScrollView和GridView是两种常用的布局组件。ScrollView是一个可以包含单个子视图并允许用户滚动查看其内容的容器,而GridView则是一种可以显示多行多列数据的控件,通常用于创建网格视图。在这个...
在IT领域,尤其是在Web开发中,GridView控件是ASP.NET中一个非常强大的工具,用于显示数据集合,如数据库中的记录。然而,当数据显示时,有时我们希望对具有相同内容的单元格进行合并,以增强数据的可读性和美观度。...
在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。当我们处理大量数据时,分页加载可以提高应用性能,减少内存消耗,并提供更好的用户体验。本篇文章将详细讲解如何在Android中利用...
在Android开发中,GridView是一种非常常用的控件,它允许我们以网格的形式展示数据,通常用于显示多张图片、图标或者列表项。这个话题是关于如何在Android应用中使用GridView来实现一个类似桌面的布局,展示多张图片...
在Android开发中,GridView是一种常见的布局管理器,它允许我们以网格形式展示数据。然而,标准的GridView默认是垂直滚动的,对于某些设计需求,如创建一个横向滚动的网格视图,就需要对GridView进行定制。这个主题...
在GridView的列头中合并单元格,可以使用`HeaderRow`对象的`Cells`集合。例如,如果要合并第一列和第二列,可以在Page_Load事件处理程序中添加以下代码: ```csharp protected void Page_Load(object sender, ...
此外,在响应式设计中,根据不同的设备屏幕尺寸动态调整单元格宽度也是非常必要的。 ### 三、使用`ItemStyle Width`属性调整单元格宽度 在ASP.NET GridView中,可以通过设置`ItemStyle Width`属性来指定单元格(即...
在.NET开发环境中,GridView控件是ASP.NET网页中常用的数据展示工具,它可以方便地对数据库中的数据进行排序、分页和编辑操作。然而,当需求变得更加复杂时,我们可能需要在一个GridView内嵌套另一个GridView,形成...
GridView继承自AbsListView,它可以自动调整每个单元格的大小,以适应屏幕宽度。通过设置GridView的列数(columnWidth属性),我们可以控制每行显示的项目数量。在XML布局文件中声明GridView并设置相关属性,例如`...
在开发过程中,我们有时需要根据业务需求改变GridView中的某一行或特定单元格的颜色,以突出显示特定数据或者达到更好的视觉效果。以下是对这个主题的详细解释: 1. GridView概述: GridView是ASP.NET Web Forms中...
正如提供的代码片段所示,通过选择器`#GridView1 td`,我们可以将所有`GridView1`中的单元格宽度设置为200像素。这种方式的好处是简单且易于维护,只需要在样式表中进行修改即可全局应用。 ```html #GridView1 td ...
在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。通常,GridView默认是垂直滚动的,但有时我们可能需要实现横向滑动的效果,这在某些特定的UI设计中很有用。本篇文章将深入探讨...