关于gridview水平居中,平均布局
来源:互联网 发布:手机配件淘宝收入 编辑:程序博客网 时间:2024/05/17 23:03
首先是布局
activity_main.xml
gridview的padding可以通过在外边嵌套一层布局添加 paddinng,例如:LinearLayout。
gridview的父控件也必须用match_parrent, gridview必须用 match_parent,才能获得它的实际宽高
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <LinearLayout android:id="@+id/linearLayout" android:layout_width="match_parent" android:layout_height="60dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:background="#999999" android:orientation="horizontal" > </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/linearLayout" android:orientation="horizontal" android:paddingLeft="20dp" android:paddingRight="20dp" android:paddingTop="25dp" android:paddingBottom="25dp" > <GridView android:id="@+id/gridView1" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#666666" android:numColumns="4" android:scrollbars="none" > </GridView> </LinearLayout></RelativeLayout>
griditem_app.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /></LinearLayout>
2 GridViewAdapter.java
package com.example.gridviewtest;import android.annotation.SuppressLint;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;public class GridViewAdapter extends BaseAdapter {private int itemWidth = 0;private int count = 3;@Overridepublic int getCount() {return count;}public void setCount(int count) {this.count = count;}public void setItemHeight(int itemWidth) {this.itemWidth = itemWidth;}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return 0;}@SuppressLint("InflateParams")@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {LayoutInflater inflater = LayoutInflater.from(parent.getContext());convertView = inflater.inflate(R.layout.griditem_app, null);}
//从外部传进来计算好的item 高度进行设置convertView.setMinimumHeight(itemWidth);return convertView;}}
MainActivity.java
package com.example.gridviewtest;import android.app.Activity;import android.os.Bundle;import android.util.DisplayMetrics;import android.widget.GridView;public class MainActivity extends Activity {private GridView gridview;private GridViewAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);gridview = (GridView) findViewById(R.id.gridView1);
//获得手机密度DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);final float denScale = (float) dm.densityDpi / (float) DisplayMetrics.DENSITY_DEFAULT;adapter = new GridViewAdapter();
//在主线程绘图渲染的时候计算gridview宽高gridview.post(new Runnable() {@Overridepublic void run() {int width = gridview.getMeasuredWidth();int height = gridview.getMeasuredHeight();int itemWidth = (int) (denScale * 80);
//计算一行能容纳的item个数int count = width / itemWidth;
//设置一行能放下的item个数gridview.setNumColumns(count);
//计算gridview可见高度所能容纳的item行数int rowCount = height / itemWidth;
//设置item高度adapter.setItemHeight((int) ((float) height / (float) rowCount));adapter.setCount(count * rowCount-9);gridview.setAdapter(adapter);}});}}
效果图
0 0
- 关于gridview水平居中,平均布局
- Android 水平平均布局
- Android 水平平均布局
- web居中布局-水平居中
- CSS布局:水平居中
- 水平居中布局解决方案
- 居中布局:水平居中 + 垂直居中 + 水平垂直居中
- 关于水平居中
- 关于水平居中
- CSS水平居中布局解决方案
- CSS水平垂直居中布局
- CSS水平垂直居中布局
- css水平垂直居中布局
- 页面布局-水平居中,垂直居中
- adroid 现行布局水平居中位置
- 元素水平垂直居中【弹性布局 || Translate】
- ExtJs布局中,控件如何水平居中?
- 解读CSS布局之-水平垂直居中
- 由malloc内存分配是否连续 引出的 一些概念
- FMDB官方使用文档-GCD的使用-提高性能(翻译)
- mysql乱码问题
- js怎么打印对象?
- 睡觉是有好处的。
- 关于gridview水平居中,平均布局
- 使用vundle进行Vim插件管理
- 线程和进程的区别
- B树、B+树、B*树
- Linux学习篇之---在Ubuntu下搭建VPN服务器
- hashcode equals
- 《Linux新手学堂系列》系列技术文章整理收藏
- 结构体ATM机
- 操作系统之内存管理(一)