GridView使用过程中,碰到的几个坑,在此记录一下!
删掉GridView中grid view 外margin
GridView gridView =
new GridView(
this);
setContentView(gridView);
gridView.setNumColumns(
4);
gridView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);
SimpleAdapter adapter =
new SimpleAdapter(
this);
List<
String> beanList =
new ArrayList<>();
beanList.add(
new String(
"叮咚新闻"));
beanList.add(
new String(
"叮咚新闻"));
beanList.add(
new String(
"叮咚新闻"));
beanList.add(
new String(
"叮咚新闻"));
beanList.add(
new String(
"叮咚新闻"));
adapter.setData(beanList);
gridView.setAdapter(adapter);
gridView.setGravity(Gravity.CENTER);
运行效果如下:
这个黄色的不伦不类,不属于grid view, 参考: http://www.educity.cn/wenda/151651.html 得知,是因为gridview中selector的问题,通过 gridView.setSelector(android.R.color.transparent);替换掉即可
实现GridView中左右可用空间均分
这里使用STRETCH_COLUMN_WIDTH stretch mode.
GridView gridView =
new GridView(
this);
setContentView(gridView);
gridView.setNumColumns(
4);
gridView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);
SimpleAdapter adapter =
new SimpleAdapter(
this);
List<
String> beanList =
new ArrayList<>();
beanList.add(
new String(
"叮咚新闻"));
beanList.add(
new String(
"叮咚新闻"));
beanList.add(
new String(
"叮咚新闻"));
beanList.add(
new String(
"叮咚新闻"));
beanList.add(
new String(
"叮咚新闻"));
adapter.setData(beanList);
gridView.setAdapter(adapter);
gridView.setSelector(android.R.color.transparent);
gridView.setGravity(Gravity.CENTER);
实现GridView中左右边界grid cell,紧靠着边界
GridView gridView = new GridView(this)
setContentView(gridView)
gridView
.setNumColumns(
4)
//
set STRETCH_SPACING stretch mode
gridView
.setStretchMode(GridView
.STRETCH_SPACING)
//
set columnWidth ,
or looks strange as below
int viewWidth = (int) (getResources()
.getDisplayMetrics()
.density *
72)
gridView
.setColumnWidth(viewWidth)
//SimpleAdapter 见下面的“运行Demo,需要的其他部分”
SimpleAdapter adapter = new SimpleAdapter(this)
List<String> beanList = new ArrayList<>()
beanList
.add(new String(
"叮咚新闻"))
beanList
.add(new String(
"叮咚新闻"))
beanList
.add(new String(
"叮咚新闻"))
beanList
.add(new String(
"叮咚新闻"))
beanList
.add(new String(
"叮咚新闻"))
adapter
.setData(beanList)
gridView
.setAdapter(adapter)
//必须取代掉原来的布局,否则grid view 四周有相当大的边距
gridView
.setSelector(android
.R.color.transparent)
gridView
.setGravity(Gravity
.CENTER)
使用上面例子,不设置columnWidth,就会出现下面类似的情况:
运行Demo,需要的其他部分
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1px"
android:color="#e5e5e5"></stroke>
<corners android:radius="4dp"></corners>
<solid android:color="@android:color/white"></solid>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_label_normal"
android:gravity="center"
android:singleLine="true"
android:textColor="@android:color/black"
android:textSize="14sp"></TextView>
package com.hang.androidtestdemo;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
public class SimpleAdapter extends BaseAdapter {
public SimpleAdapter(Context context) {
this.mContext = context;
}
private List<String> beanList;
private Context mContext;
public void setData(List<String> beanList) {
this.beanList = beanList;
notifyDataSetChanged();
}
@Override
public int getCount() {
return (beanList ==
null) ?
0 : beanList.size();
}
@Override
public String
getItem(
int position) {
String bean = beanList.get(position);
return bean;
}
@Override
public long getItemId(
int position) {
return position;
}
@Override
public View
getView(
int position, View convertView, ViewGroup parent) {
if (convertView ==
null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.cell_drag_category_sub, parent,
false);
AbsListView.LayoutParams viewParams = (AbsListView.LayoutParams) convertView.getLayoutParams();
int viewHeight = (
int) (mContext.getResources().getDisplayMetrics().density *
29);
int viewWidth = (
int) (mContext.getResources().getDisplayMetrics().density *
72);
viewParams.height = viewHeight;
viewParams.width = viewWidth;
}
String item = getItem(position);
((TextView) convertView).setText(item);
return convertView;
}
}
转载请注明原文地址: https://ju.6miu.com/read-1309707.html