㈠ android自定义GridView实现可以多行显示并且能实现左右滑动这个如何做呀,像手机系统的相册浏览图片一样
就是画廊效果,在网络,csdn中搜索一大把源代码可以下载
http://www.eoeandroid.com/thread-182328-1-1.html 这解释比较详细
http://down.51cto.com/data/385451这个可以直接下载源码,直接导进就可以了
㈡ android scrollview嵌套gridview滑动出现卡顿怎么解决
其实就是一个预先加载的过程,你不要一口气都加载,当你画面静止的时候,偷偷预先加载5-10个view的数据,之所以慢就是因为临时加载数据多了。理念类似双缓冲。
㈢ android ScrollView+GridView GridView不滚动
红色框框的代码为何要那样写?
另外,gridview内容超出了屏幕就可以滑动,加个ScrollView感觉没多大必要啊
㈣ android一个界面上有两个gridview如何滑动一个让另一个也移动滑动
设置父布局为LinearLayout,然后设置2个gridview的weight都为1.0,然后滑动互不影响。
GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的.
GirdView的一些属性:
android:numColumns="auto_fit" --------列数设置为自动
android:columnWidth="90dp",----------每列的宽度,也就是Item的宽度
android:stretchMode="columnWidth"------缩放与列宽大小同步
android:verticalSpacing="10dp"----------垂直边距
android:horizontalSpacing="10dp"-------水平边距
㈤ 安卓开发 Fragment中使用GridView 还有点击事件
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.evst.wpct.AccountStorage;
import com.evst.wpct.AppController;
import com.evst.wpct.ProjectConst;
import com.evst.wpct.R;
import com.evst.wpct.common.BaseFragment;
import com.evst.wpct.info.TeacherDetailInfoFragment;
import com.evst.wpct.model.CheckModel;
import com.evst.wpct.model.CheckDetailModel;
import com.evst.wpct.util.Utility;
public class CheckMainManageFragment extends BaseFragment implements
OnClickListener {
// UI
private PortraitCheckManageFragment portraitCheckManageFragment;
private ListCheckManageFragment listCheckManageFragment;
// Data
private int mCheckId;
private String mCheckName;
// private List<PupilCheckModel> mPupilChecks;
public static CheckMainManageFragment newInstance(int check_id, String check_name) {
CheckMainManageFragment fragment = new CheckMainManageFragment();
Bundle args = new Bundle();
args.putInt("check_id", check_id);
args.putString("check_name", check_name);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO 自动生成的方法存根
super.onCreate(savedInstanceState);
this.mCheckId = this.getArguments().getInt("check_id");
this.mCheckName = this.getArguments().getString("check_name");
if (AccountStorage.getInstance().mCheckDetails == null) {
AccountStorage.getInstance().mCheckDetails = new ArrayList<CheckDetailModel>();
}
AccountStorage.getInstance().mCheckDetails.clear();
portraitCheckManageFragment = PortraitCheckManageFragment.newInstance();
listCheckManageFragment = ListCheckManageFragment.newInstance();
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_manage_main_check, container,
false);
TextView tvTitle = (TextView) view.findViewById(R.id.action_bar_title);
tvTitle.setText(this.mCheckName);
Button btn_PortraitCheck = (Button) view
.findViewById(R.id.btn_PortraitCheck);
btn_PortraitCheck.setOnClickListener(this);
Button btn_ListCheck = (Button) view.findViewById(R.id.btn_ListCheck);
btn_ListCheck.setOnClickListener(this);
this.onClick(btn_ListCheck);
// String url = ProjectConst.MAIN_API_URL + "/check/detail" + "?";
// url += "check_id=" + mCheckId;
//
// Log.i("KKKK", url);
//
// JsonObjectRequest jsObjRequest = new JsonObjectRequest(
// Request.Method.GET, url, null,
// new Response.Listener<JSONObject>() {
//
// @Override
// public void onResponse(JSONObject response) {
// int ret = response.optInt("ret");
//
// if (ret > 0) {
// JSONObject data = response.optJSONObject("data");
// if (data != null) {
// JSONArray array = data.optJSONArray("results");
// if (array != null) {
// for (int i = 0; i < array.length(); i++) {
// JSONObject item = array
// .optJSONObject(i);
// CheckDetailModel m = CheckDetailModel
// .newInstance(item);
// AccountStorage.getInstance().mCheckDetails.add(m);
// }
// }
// }
// listCheckManageFragment.mAdapter.notifyDataSetChanged();
// } else {
// String error = response.optString("error");
// Utility.showToast(getActivity(), error, true);
// }
// }
// }, new Response.ErrorListener() {
//
// @Override
// public void onErrorResponse(VolleyError error) {
// // TODO Auto-generated method stub
// }
// });
// AppController.getInstance().addToRequestQueue(jsObjRequest);
return view;
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_PortraitCheck: {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.remove(listCheckManageFragment);
ft.replace(R.id.layout_check_main, PictureModeFragment.newInstance());
ft.commit();
}
break;
case R.id.btn_ListCheck:{
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.remove(portraitCheckManageFragment);
ft.replace(R.id.layout_check_main, listCheckManageFragment);
ft.commit();
}
break;
default:
break;
}
}
}这是Fragment中点击事件的写法,注意添加包的声明啊,而GridView这个东西,你应该能弄懂,无非就是LayoutInflater inflater=LayoutInflater.from(getApplicationContext());
inflater.inflate(resource, root);生成布局文件时,将你的GridView 膨胀出来吗。实在不行就拖拽
㈥ 实现android系统中ListView和Gridview两个布局之间点击跳转的操作方法有哪些
1. 首先,如下所示,将GridView和ListView布局到同一个页面中;
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:id="@+id/app_title"
android:layout_width="fill_parent"
android:layout_height="44dip"
android:text="@string/main_service_title"
android:gravity ="center"
android:textSize="27px"
android:textColor="#ffffff"
android:background ="@drawable/title_bar"/>
<GridView
android:id="@+id/app_grid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:padding="10dp"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:numColumns="4"
android:columnWidth="60dp"
android:stretchMode="columnWidth"
android:gravity="center"/>
<ListView
android:id="@+id/app_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:divider="@drawable/divider"/>
</LinearLayout>
㈦ android gridview的监听事件不起作用啊
gridView事件处理不了,那说明代码写的有问题了。
1.关于Android事件构成
在Android中,事件主要包括点按、长按、拖拽、滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作。所有这些都构成了Android中的事件响应。总的来说,所有的事件都由如下三个部分作为基础:
1.按下(ACTION_DOWN)
2.移动(ACTION_MOVE)
3.抬起(ACTION_UP)
所有的操作事件首先必须执行的是按下操作(ACTIONDOWN),之后所有的操作都是以按下操作作为前提,当按下操作完成后,接下来可能是一段移动(ACTIONMOVE)然后抬起(ACTION_UP),或者是按下操作执行完成后没有移动就直接抬起。这一系列的动作在Android中都可以进行控制。
2.事件的处理API
在View和ViewGroup中都存在dispatchTouchEvent和onTouchEvent方法,但是在ViewGroup中还有一个onInterceptTouchEvent方法,在Android中,所有的事件都是从开始经过传递到完成事件的消费,这些方法的返回值就决定了某一事件是否是继续往下传,还是被拦截了,或是被消费了。
public boolean dispatchTouchEvent(MotionEvent event)
public boolean onTouchEvent(MotionEvent event)
public boolean onInterceptTouchEvent(MotionEvent event)
3.事件处理API的说明
dispatchTouchEvent方法用于事件的分发,Android中所有的事件都必须经过这个方法的分发,然后决定是自身消费当前事件还是继续往下分发给子控件处理。返回true表示不继续分发,事件没有被消费。返回false则继续往下分发,如果是ViewGroup则分发给onInterceptTouchEvent进行判断是否拦截该事件。
onTouchEvent方法用于事件的处理,返回true表示消费处理当前事件,返回false则不处理,交给子控件进行继续分发。
onInterceptTouchEvent是ViewGroup中才有的方法,View中没有,它的作用是负责事件的拦截,返回true的时候表示拦截当前事件,不继续往下分发,交给自身的onTouchEvent进行处理。返回false则不拦截,继续往下传。
㈧ 求教高手,android下如何让GridView能够水平滚动,行数固定是三行
gridview外面套一个horizontalscrollview
㈨ 如何实现android中横向滚动的gridView
法1.直接用tablelayout gridview是根据你每行的单元数自动生成的行数;
法2.可以在代码里根据view数来动态设置列数,比如有10记录可以设置列数为10/3+1,这样就有三行四列了。
如果您对我的回答有不满意的地方,还请您继续追问;
答题不易,互相理解,互相帮助!