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感覺沒多大必要啊