`

安卓开发gridview根据屏幕宽度行列相同的单元格集合

阅读更多

 

前不久网上有人问如何在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"/>

 

  • 大小: 34.3 KB
  • 大小: 3.4 KB
分享到:
评论

相关推荐

    gridview,repeate合并相同内容单元格

    当数据源中有重复的列值时,我们可以通过设置`RowDataBound`事件来检查相邻行的单元格内容,并根据内容是否相同进行合并。以下是一个基本的示例: ```csharp protected void GridView1_RowDataBound(object sender,...

    根据屏幕宽度动态设置GridView列数

    当我们的应用需要适应不同屏幕尺寸和分辨率时,根据屏幕宽度动态设置GridView的列数变得尤为重要。这样可以确保数据在各种设备上都有良好的显示效果,提供优秀的用户体验。 首先,我们需要了解GridView的基本用法。...

    GridView合并单元格

    在标题“GridView合并单元格”中,这个话题主要探讨的是如何在GridView中实现单元格的合并。 合并GridView的单元格并非简单的HTML操作,因为GridView在服务器端自动生成表格(HTML `&lt;table&gt;`)。实际上,我们是在...

    wpf GridView 合并单元格 Demo

    在Windows Presentation Foundation (WPF) 中,GridView 是DataGrid控件的一种视图模式,它用于显示数据集合,并且常用于创建表格布局。本教程将详细解释如何在WPF的GridView中实现单元格合并,这对于创建复杂的报表...

    Android 实现GridView的item合并效果

    实现GridView的横向滑动,默认为纵向滑动,主要目标实现GridView中两个或多个相邻item的合并效果,满足项目的UI设计,同时解决了item选中放大被其他item遮挡的问题;用法简单,一目了然,可供参考

    GridView编辑单元格

    编辑GridView单元格 说明:单元格获取焦点,则单元格处于编辑状态,单元格失去焦点,则立即更新数据库。采用非Ajax技术。 1、访问Session中的数据 这个例子是用户使用Session中数据。鼠标点击编辑GridView单元格。...

    GridView中单元格合并

    总结来说,GridView单元格合并是.NET Web开发中的一个重要技巧,它能够帮助我们更有效地展示复杂的数据结构,提供更清晰的视图。熟练掌握这一技术,可以提升用户体验,让数据展示更加专业和直观。

    android开发GridView实例

    在Android开发中,GridView是一种非常常用的布局控件,它允许我们以网格的形式展示数据,通常用于创建图片库、菜单选项或者任何需要多行多列显示的界面。在本实例中,我们将深入探讨如何使用GridView来构建一个基本...

    Android ScrollView+GridView左右滑动 自动定位滑动到某一项

    在Android开发中,ScrollView和GridView是两种常用的布局组件。ScrollView是一个可以包含单个子视图并允许用户滚动查看其内容的容器,而GridView则是一种可以显示多行多列数据的控件,通常用于创建网格视图。在这个...

    gridview 单元格合并源代码

    在IT领域,尤其是在Web开发中,GridView控件是ASP.NET中一个非常强大的工具,用于显示数据集合,如数据库中的记录。然而,当数据显示时,有时我们希望对具有相同内容的单元格进行合并,以增强数据的可读性和美观度。...

    android Gridview分页实现

    在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。当我们处理大量数据时,分页加载可以提高应用性能,减少内存消耗,并提供更好的用户体验。本篇文章将详细讲解如何在Android中利用...

    Android中GridView以表格形式显示多张图片(仿桌面)

    在Android开发中,GridView是一种非常常用的控件,它允许我们以网格的形式展示数据,通常用于显示多张图片、图标或者列表项。这个话题是关于如何在Android应用中使用GridView来实现一个类似桌面的布局,展示多张图片...

    Android横向GridView合并item放大item

    在Android开发中,GridView是一种常见的布局管理器,它允许我们以网格形式展示数据。然而,标准的GridView默认是垂直滚动的,对于某些设计需求,如创建一个横向滚动的网格视图,就需要对GridView进行定制。这个主题...

    ASP.net GridView合并单元格

    在GridView的列头中合并单元格,可以使用`HeaderRow`对象的`Cells`集合。例如,如果要合并第一列和第二列,可以在Page_Load事件处理程序中添加以下代码: ```csharp protected void Page_Load(object sender, ...

    gridview调整单元格宽度的方法

    此外,在响应式设计中,根据不同的设备屏幕尺寸动态调整单元格宽度也是非常必要的。 ### 三、使用`ItemStyle Width`属性调整单元格宽度 在ASP.NET GridView中,可以通过设置`ItemStyle Width`属性来指定单元格(即...

    嵌套中的gridview单元格编辑

    在.NET开发环境中,GridView控件是ASP.NET网页中常用的数据展示工具,它可以方便地对数据库中的数据进行排序、分页和编辑操作。然而,当需求变得更加复杂时,我们可能需要在一个GridView内嵌套另一个GridView,形成...

    android GridView数据库开发案例

    GridView继承自AbsListView,它可以自动调整每个单元格的大小,以适应屏幕宽度。通过设置GridView的列数(columnWidth属性),我们可以控制每行显示的项目数量。在XML布局文件中声明GridView并设置相关属性,例如`...

    设置gridview列宽(超好用)

    正如提供的代码片段所示,通过选择器`#GridView1 td`,我们可以将所有`GridView1`中的单元格宽度设置为200像素。这种方式的好处是简单且易于维护,只需要在样式表中进行修改即可全局应用。 ```html #GridView1 td ...

    Android GridView完美横向滑动 ,并且可限制Gridview显示行数!

    在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。通常,GridView默认是垂直滚动的,但有时我们可能需要实现横向滑动的效果,这在某些特定的UI设计中很有用。本篇文章将深入探讨...

    任意改变GridView某一行颜色和任意单元格颜色

    在开发过程中,我们有时需要根据业务需求改变GridView中的某一行或特定单元格的颜色,以突出显示特定数据或者达到更好的视觉效果。以下是对这个主题的详细解释: 1. GridView概述: GridView是ASP.NET Web Forms中...

Global site tag (gtag.js) - Google Analytics