package com.sxy.GridView; import com.example.s_demo.R; import android.app.Activity; import android.content.Context; import android.graphics.Color; import android.graphics.Typeface; import android.os.Bundle; import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; public class MyGridView_MainActivity extends Activity { private static final String TAG = "sxy"; private GridView mygridview_GridV = null; private Typeface typeFace = null; public MyGridView_MainActivity() { // TODO Auto-generated constructor stub } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.mygridview_mainactivity); init(); } private int pageColCount = 4;//每页列数 private int itemTotal = 0; String chengyuStr[] = null; private void init(){ typeFace = Typeface.createFromFile("/system/fonts/hifont_kai.ttf"); mygridview_GridV = (GridView)findViewById(R.id.mygridview_GridV); chengyuStr = getResources().getStringArray(R.array.chengyu); itemTotal = chengyuStr.length; Log.i(TAG, "itemTotal="+itemTotal); mygridview_GridV.setNumColumns(pageColCount); mygridview_GridV.setAdapter(new MyAdapter(this)); mygridview_GridV.setHorizontalSpacing(10); setListener(); } private int preSelId = -1;//记录每次选择项id,方便突出显示被选择项 private View preSelView = null;//记录每次选择项,方便突出显示被选择项 private long lastClickTime = 0;//记录上次点击时间,避免快速多次点击 private void setListener(){ mygridview_GridV.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { long currentTime = System.currentTimeMillis(); if(currentTime - lastClickTime < 500) return; lastClickTime = currentTime; if(position < itemTotal && preSelId != position){ TextView contentTv = (TextView)arg1; contentTv.setBackgroundColor(Color.RED); contentTv.setTextColor(Color.WHITE); Log.i(TAG, "preselid="+preSelId+", position="+position+", child="+arg0.getChildCount()); if(preSelView != null){ TextView preSelContentTv = (TextView)preSelView; preSelContentTv.setBackgroundColor(Color.WHITE); preSelContentTv.setTextColor(Color.BLACK); } preSelId = position; preSelView = arg1; } } }); } private class MyAdapter extends BaseAdapter{ private Context mContext; public MyAdapter(Context context) { this.mContext=context; } @Override public int getCount() { // Log.i(TAG, "getCount ="+itemTotal); return itemTotal; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } private final static int SEL_FONTSIZE = 30;//字体大小 @Override public View getView(int position, View convertView, ViewGroup parent) { // Log.i(TAG, "getView position="+position); TextView contentTv; if(convertView==null){ contentTv=new TextView(mContext); }else{ contentTv = (TextView) convertView; } contentTv.setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.WRAP_CONTENT, GridView.LayoutParams.WRAP_CONTENT)); contentTv.setTextSize(SEL_FONTSIZE); contentTv.setGravity(Gravity.CENTER); contentTv.setTypeface(typeFace); if(preSelId == position){ contentTv.setBackgroundColor(Color.RED); contentTv.setTextColor(Color.WHITE); }else{ contentTv.setBackgroundColor(Color.WHITE); contentTv.setTextColor(Color.BLACK); } String text = chengyuStr[position]; if(text != null) contentTv.setText(text); return contentTv; } } } mygridview_mainactivity.xml <?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <gridview android:id="@+id/mygridview_GridV" android:layout_width="900dip" android:layout_height="450dip" android:layout_margintop="10dip" android:layout_centerinparent="true" android:horizontalspacing="10dip" android:verticalspacing="10dip"> </gridview></relativelayout> chengyu.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="chengyu"> <item>雕龙画凤</item> <item>放龙入海</item> <item>凤表龙姿</item> <item>虎斗龙争</item> <item>活龙活现</item> <item>踞虎盘龙</item> <item>亢龙有悔</item> <item>跨凤乘龙</item> <item>老迈龙钟</item> <item>龙韬豹略</item> <item>龙腾虎跃</item> <item>龙头蛇尾</item> <item>龙行虎步</item> <item>马龙车水</item> <item>马如游龙</item> <item>盘龙卧虎</item> <item>白龙鱼服</item> <item>暴腮龙门</item> <item>笔走龙蛇</item> <item>藏龙卧虎</item> <item>车水马龙</item> <item>成龙配套</item> <item>乘龙佳婿</item> <item>乘龙快婿</item> <item>打凤捞龙</item> <item>得婿如龙</item> <item>二龙戏珠</item> <item>伏虎降龙</item> <item>伏龙凤雏</item> <item>龟龙片甲</item> <item>龟龙鳞凤</item> </string-array> </resources>