android自定义gridview
‘壹’ android中添加了一个GridView,在GridView中的每一个Item中,又有一个按钮,要给每一个按钮添加点击事件
请参考我以前写的一篇帖子,是给listview的,但好像不能使用button,最好把button换成imageview,反正imageview也是能点击的。你遇到这个问题是因为你给每一个item设置了事件,然后当你点击这个item的时候,里面的button被点中了。解决办法是继承view,写一个自定义的view,重写他的 setPressed 方法,这个方法里面判断它在点中的同时是不是父view也被点中了,如果父view也被点中的话,之间return,否则调用super的setpressed方法。这样就能使你的子view不在父view点中的时候获得事件。帖子在http://blog.csdn.net/huihuangui/article/details/6768629
‘贰’ Android Studio 如何在代码中动态添加GridView
DecorView 是android 界面的顶级View ,当前界面的整个即为DecorView。DecorView为FrameLayout,而DecorView 一般会包含一个竖直方向的LinearLayout。这个竖直方向的LinearLayout 一般分为两个部分(具体Android版本和主题有所不同),上部分为标题栏,下部分为内容栏,而内容栏的id 为 android.R.id.content, 内容栏也是FrameLayout,我们使用setContentView(),的布局加入的就是内容栏。
动态添加View 一般是添加在我们自己的布局文件里,而setContentView时加入的我们的布局是内容栏的第一个子View,所以我们需要获取到我们的布局对应的View。
####如何获取DecorView?
在Activity 中直接调用 getWindow().getDecorView()
####如何获取ContentView?
在Activity中调用
FrameLayout contentView = (FrameLayout)getWindow().getDecorView().findViewById(android.R.id.content);
或直接:
FrameLayout contentView = (FrameLayout)activity.findViewById(android.R.id.content);
####获取我们填充的布局
ViewGroup viewGroup = (ViewGroup)contentView.getChildAt(0);
####添加View
‘叁’ android listview里面能嵌套gridview吗
listview里面能嵌套listview,gridview等等你能想到的控件,至于赋值你需要在重写的Listview的Adapter里面把数据传递进来,然后把数据赋值给gridview的adapter就好了,gridview的子项点击监听事件也写在Listview的Adapter里面,不要想得太复杂了。
‘肆’ Android开发,如何用gridview自定义每行的列数不同
ListView里嵌GridView或者horizontal ListView.
‘伍’ 如何禁止Gridview上下滑动
在做拼图游戏的时候,拼图界面使用了Gridview,我不希望它可以滑动,但是SDK中没有相应的API或者XML属性来禁止Gridview滑动,怎么办呢?我们可以通过重写Gridview类的dispatchTouchEvent(MotionEvent ev)方法来禁止Gridview滑动。
1、自定义StationaryGridview类,扩展自android.widget.GridView类
2、重写dispatchTouchEvent方法
package com.went.Puzzle;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.GridView;
public class StationaryGridview extends GridView {
public GrapeGridview(Context context) {
super(context);
}
public GrapeGridview(Context context, AttributeSet attrs) {
super(context, attrs);
}
public GrapeGridview(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
//重写dispatchTouchEvent方法禁止GridView滑动
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if(ev.getAction() == MotionEvent.ACTION_MOVE){
return true;
}
return super.dispatchTouchEvent(ev);
}
}
3、在xml布局中引用StationaryGridview时记得包含包名
<com.went.Puzzle.StationaryGridview
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
‘陆’ 如何让安卓GridView中每个组件既包括图片,也包括textview和button
自定义gridview
java">staticclassViewHolder
{
publicImageViewimage;
publicTextViewtitle;
publicTextViewtime;
}
importjava.util.ArrayList;
importjava.util.List;
importandroid.content.Context;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.BaseAdapter;
importandroid.widget.ImageView;
importandroid.widget.TextView;
{
privateLayoutInflaterinflater;
privateList<GridItem>gridItemList;
publicGridItemAdapter(String[]titles,int[]images,String[]description,Contextcontext)
{
super();
gridItemList=newArrayList<GridItem>();
inflater=LayoutInflater.from(context);
for(inti=0;i<images.length;i++)
{
GridItempicture=newGridItem(titles[i],images[i],description[i]);
gridItemList.add(picture);
}
}
@Override
publicintgetCount()
{
if(null!=gridItemList)
{
returngridItemList.size();
}
else
{
return0;
}
}
@Override
publicObjectgetItem(intposition)
{
returngridItemList.get(position);
}
@Override
publiclonggetItemId(intposition)
{
returnposition;
}
@Override
publicViewgetView(intposition,ViewconvertView,ViewGroupparent)
{
ViewHolderviewHolder;
if(convertView==null)
{
convertView=inflater.inflate(R.layout.grid_item,null);
viewHolder=newViewHolder();
viewHolder.title=(TextView)convertView.findViewById(R.id.title);
viewHolder.image=(ImageView)convertView.findViewById(R.id.image);
viewHolder.time=(TextView)convertView.findViewById(R.id.description);
convertView.setTag(viewHolder);
}else
{
viewHolder=(ViewHolder)convertView.getTag();
}
viewHolder.title.setText(gridItemList.get(position).getTitle());
viewHolder.time.setText(gridItemList.get(position).getTime());
viewHolder.image.setImageResource(gridItemList.get(position).getImageId());
returnconvertView;
}
然后调用
gridView=(GridView)findViewById(R.id.gridview);
GridItemAdapteradapter=newGridItemAdapter(titles,images,description,this);
gridView.setAdapter(adapter);
‘柒’ 如何设置 android gridview 怎么设置 , 一些item可以点击,另外.....
这个要在代码中进行设置,基本上有两种方式:
在GridView所在的 activity(或者fragment)中, 找到该View,监听点击事件:
gridView.setOnItemClickListener(newAdapterView.OnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){
//点击item触发,进行判断,如果需要处理点击,就进行处理,否则,什么也不做
if(/*处理点击条件*/){
//要做的事
}
}
});在自己写的GridView对应的适配器中(一般继承于BaseAdapter)的getView中进行判断,如果是需呀处理的item, 就调用setOnClickListener,并定义相应的点击事件,否则可以不绑定点击事件。
‘捌’ android GridView 如何设置为左右可滚动
GridView不支持左右滚动。
左右滚动的需求可考虑:
在外层加一个HorizontalScrollView, 不过这种滑动体验并不好,上下左右均可滑动,如果是斜着滑的时候,体验差。当然,如果你会自定义HorizontalScrollView把滑动区分为斜着上下滑和斜着左右滑,再把斜着上下滑的事件传递给子View也是可以的。
可以考虑Viewpager里加载多个GridView,这样GridView就可以一页一页的滑
‘玖’ android 里自定义view 填充GridView 的视图 可以吗
方法一:
通过inflater:
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
if(convertView==null){
LayoutInflaterinflater=(LayoutInflater)xxx.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView=inflater.inflate(R.layout.main,null);
}//DoyourthingsreturnconvertView;
}
方法二:
通过代码创建,
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
if(convertView==null){
convertView=newMyView();
}//DoyourthingsreturnconvertView;
}
‘拾’ android ScrollView+GridView GridView不滚动
红色框框的代码为何要那样写?
另外,gridview内容超出了屏幕就可以滑动,加个ScrollView感觉没多大必要啊