对于android九宫格布局的实现

前言:

由于项目需要,需在一个已有布局中嵌入类似九宫格的布局,以下是传统的九宫格布局。(来源网络)


但此次需求为在已有布局中的嵌入,经过摸索得到方法。

显示九宫格需要用GridView, 要显示每个格子中的视图有两种方式,第一种方式是做成xml文件,再将xml文件做成视图。第二种方式就是在代码中构建出这样一种布局,这里采用第一种方式来实现:

效果图:对于android九宫格布局的实现_第1张图片


package cn.cqupt.unicom;


import cn.cqupt.unicom.Regist3Activity.SpinnerXMLSelectedListener;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;




public class FleaMarketShowActivity extends Activity {
    /** Called when the activity is first created. */
    private Spinner spinner1;
    private Spinner spinner2;
    private GridView gridView1;
    private ArrayAdapter adapter1;
    private ArrayAdapter adapter2;

@Override
    public void onCreate(Bundle savedInstanceState) {
   
//退出程序用代码·····································································

MyApplication.getInstance().addActivity(this);
//退出程序用代码end···································································


        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.flea_market_show);
        
        
        spinner1 = (Spinner)findViewById(R.id.spinner1);
        spinner2 = (Spinner)findViewById(R.id.spinner2);
        gridView1 = (GridView)findViewById(R.id.gridView1);
        
        //将可选内容与ArrayAdapter连接起来   
        adapter1 = ArrayAdapter.createFromResource(this, R.array.jiagepaixu, android.R.layout.simple_spinner_item);
        //设置下拉列表的风格    
        adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);   
        spinner1.setAdapter(adapter1); 
        //添加事件Spinner事件监听     
        spinner1.setOnItemSelectedListener(new SpinnerXMLSelectedListener());
        //设为默认
        spinner1.setVisibility(View.VISIBLE);
        
        
        adapter2 = ArrayAdapter.createFromResource(this, R.array.julifanwei, android.R.layout.simple_spinner_item);
        //设置下拉列表的风格    
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);   
        spinner2.setAdapter(adapter2); 
        //添加事件Spinner事件监听     
        spinner2.setOnItemSelectedListener(new SpinnerXMLSelectedListener());
        //设为默认
        spinner2.setVisibility(View.VISIBLE);
        
        
        
        //获取到GridView  
        gridView1.setAdapter(new MainGridViewAdapter(this));
      //给gridview设置数据适配器
        gridView1.setAdapter(new MainGridViewAdapter(this));
      //点击事件  
        gridView1.setOnItemClickListener(new MainItemClickListener());
         
    }
//以下为点击事件 
private class MainItemClickListener implements OnItemClickListener{  
        /** 
         * @param parent 代表当前的gridview  
         * @param view 代表点击的item 
         * @param position 当前点击的item在适配中的位置  
         * @param id 当前点击的item在哪一行 
         */  
        public void onItemClick(AdapterView parent, View view, int position,  
                long id) {  
            switch (position) {  
            case 0:  
                Intent intent = new Intent(FleaMarketShowActivity.this,GoodsInfoActivity.class);  
                startActivity(intent);  
                break;  
            }  
        }  
    }






//下拉框监听器 使用XML形式操作  
class SpinnerXMLSelectedListener implements OnItemSelectedListener{   
public void onItemSelected(AdapterView arg0, View arg1, int arg2,   
long arg3) {
System.out.println("------arg2------"+arg2);
System.out.println("-------arg3-----"+arg3);

   }   

   public void onNothingSelected(AdapterView arg0) {   
             
           
   }  
}

}
适配器java代码:

package cn.cqupt.unicom;


import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


// 完成gridview 数据到界面的适配 
public class MainGridViewAdapter extends BaseAdapter {
private static final String TAG = "MainGridViewAdapter";
private String[] names = {"手机防盗","通讯卫士","软件管理","任务管理","上网管理","手机杀毒","系统优化","高级工具","设置中心"};
private int[] icons = {R.drawable.ct,R.drawable.ct,R.drawable.ct,R.drawable.ct,R.drawable.ct,R.drawable.ct,R.drawable.ct,R.drawable.ct,R.drawable.ct};
private Context context;
LayoutInflater infalter;

public MainGridViewAdapter(Context context) {
this.context = context;
//方法1 通过系统的service 获取到 试图填充器 
//infalter = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//方法2 通过layoutinflater的静态方法获取到 视图填充器
infalter = LayoutInflater.from(context);
}
// 返回gridview里面有多少个条目 
public int getCount() {
return names.length;
}
//返回某个position对应的条目 
public Object getItem(int position) {
return position;
}
//返回某个position对应的id
public long getItemId(int position) {
return position;
}
//返回某个位置对应的视图 
public View getView(int position, View convertView, ViewGroup parent) {
Log.i(TAG,"GETVIEW "+ position);
//把一个布局文件转换成视图
View view = infalter.inflate(R.layout.mainactivity_item, null);
   ImageView iv =(ImageView) view.findViewById(R.id.ItemImage);
   TextView  tv = (TextView) view.findViewById(R.id.ItemText);
//设置每一个item的名字和图标 
   iv.setImageResource(icons[position]);
tv.setText(names[position]);
  return view;
}
}


主界面布局文件:

            android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:background="#ffffff"
        android:gravity="center"
        android:orientation="vertical">


                    android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >




                            android:id="@+id/textView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="跳蚤市场"
                android:textColor="#039acc"
                android:textSize="40sp" />


       



                    android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >


                            android:layout_width="match_parent"
                android:layout_height="wrap_content" >


                                    android:id="@+id/spinner1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1" />


                                    android:id="@+id/spinner2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1" />


           
            


       




                    android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" 
            android:gravity="center">


                            android:id="@+id/gridView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:numColumns="2" 
                android:horizontalSpacing="10dp" 
  android:verticalSpacing="10dp" 
  android:columnWidth="90dp" 
  android:stretchMode="columnWidth" 
  android:gravity="center">
           


       
       
   


内嵌试图布局文件:

 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 

    android:id="@+id/ItemImage" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true"/> 
android:layout_height="wrap_content" 
android:layout_below="@+id/ItemImage" 
android:id="@+id/ItemText" 
android:layout_centerHorizontal="true" 
/> 
 





************************************************************************************************end************************************************************************************

你可能感兴趣的:(对于android九宫格布局的实现)