ListView嵌套GridView时的,gridview显示不全的冲突问题
来源:互联网 发布:两人换脸的相机软件 编辑:程序博客网 时间:2024/05/26 19:17
ListView中嵌套GridView时,gridview的内容会显示不全,这就需要自定义GridView,然后重写gridview的onMeasure方法,当然,除了这种方法还有其他方法,本文只总结了这一种,具体如下:
首先是主布局,只有一个ListView
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_test_list_view" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="ht.testxyapp.com.testapp.activity.TestListViewActivity"> <ListView android:id="@+id/mListView" android:layout_width="wrap_content" android:layout_height="wrap_content"></ListView></RelativeLayout>
其次是listview的item布局,本文是两个TextView和一个gridview
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/tv_name" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="left" android:text="" /> <TextView android:id="@+id/btnMore" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="right" android:text="更多" /> </LinearLayout> <ht.testxyapp.com.testapp.widget.MyGridView android:id="@+id/list1Gridview" android:layout_width="match_parent" android:layout_height="wrap_content" android:numColumns="auto_fit"></ht.testxyapp.com.testapp.widget.MyGridView></LinearLayout>自定义的gridview,只需要重写他的onMeasure方法即可
public class MyGridView extends GridView { public MyGridView(Context context) { super(context); } public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int mSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, mSpec+50); }}
然后是gridview的item布局,只有一个TextView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="kll;" /></LinearLayout>
然后是MainActivity,将listview和gridview的适配器添加上即可
package ht.testxyapp.com.testapp.activity;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import ht.testxyapp.com.testapp.R;public class TestListViewActivity extends AppCompatActivity { private ListView mListView; private String[] listdata1 = {"组合1", "组合2"}; private String[] gridData1 = {"000","999","888","777","666","555","444","333","222","111"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_list_view); mListView = (ListView) findViewById(R.id.mListView); mListView.setAdapter(new ListAdapter()); } private class ListAdapter extends BaseAdapter { @Override public int getCount() { return listdata1.length; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view; ViewHolder holder; if (convertView == null) { view = View.inflate(TestListViewActivity.this, R.layout.item_listview1, null); holder = new ViewHolder(); holder.tvName = (TextView) view.findViewById(R.id.tv_name); holder.mGridview = (GridView) view.findViewById(R.id.list1Gridview); view.setTag(holder); } else { view = convertView; holder = (ViewHolder) view.getTag(); } holder.tvName.setText(listdata1[position]); holder.mGridview.setAdapter(new GridAdapter()); holder.mGridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(TestListViewActivity.this, position+"**", Toast.LENGTH_SHORT).show(); } }); return view; } private class ViewHolder { TextView tvName; GridView mGridview; } } private class GridAdapter extends BaseAdapter{ @Override public int getCount() { return gridData1.length; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view; ViewHolder holder; if (convertView==null){ view = View.inflate(TestListViewActivity.this,R.layout.item_gridview,null); holder = new ViewHolder(); holder.name = (TextView) view.findViewById(R.id.name); view.setTag(holder); }else{ view=convertView; holder = (ViewHolder) view.getTag(); } holder.name.setText(gridData1[position]); return view; } private class ViewHolder{ TextView name; } }}
本文是将adapter全部写在了MainActivity里
0 0
- ListView嵌套GridView时的,gridview显示不全的冲突问题
- listview嵌套GridView显示不全的问题
- listview嵌套gridview 条目里面gridview显示不全的问题
- 解决listview嵌套gridview,gridview显示不全的问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题(冲突)
- 在ListView嵌套GridView中出现的点击事件冲突的处理以及gridview显示不全的问题
- Android 在ListView嵌套GridView中出现的点击事件冲突的处理以及gridview显示不全的问题
- ScrollView 下嵌套 ListView 或 GridView 冲突显示不全问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题
- Cocos Creator中使用动作列表(官方文档摘录)
- 坐标转换方法
- java发送邮件
- respond.js让IE8支持媒体查询
- Android adb 获取root(4.4版本4.2版本测试可行)
- ListView嵌套GridView时的,gridview显示不全的冲突问题
- python pow() 函数
- 328. Odd Even Linked List
- windows 上安装 pip 和 scrapy
- Android开发艺术探索笔记(5)- Serializable和Parcelable
- Python logging模块详解
- 第4章 控制执行流程
- PHP短信发送代码
- POJ - 2409 Let it Bead(波利亚计数)(欧拉函数)