Scrollview中嵌套listview,显示不完全
来源:互联网 发布:浙江省三级数据库题库 编辑:程序博客网 时间:2024/06/06 13:17
最近在做商品详情界面。里面包括各种按钮,图片。于是就尝试scrollview中嵌套listview。当然,如果不作处理,listview只显示第一项。于是我重写了listview
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); }
这个方法大家都知道,很好用,但是在item的高度相同的时候,如果item的高度不一,于是就可能出现最后几项数据不显示。找了很多方法都不好用,也想过要用linelayout,动态的加载,正好网上有这么一个类
import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.util.TypedValue;import android.view.View;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.LinearLayout;/*** * * @author FreePC * */public class LinearLayoutForListView extends LinearLayout{ private BaseAdapter adapter; private OnItemClickListener onItemClickListener; /** * 通过 Java代码 实例化 * @param context */ public LinearLayoutForListView(Context context) { super(context); //设置LinearLayoutForListView为垂直布局,否者默认为水平布局,容易疏忽导致子项显示不全 LinearLayoutForListView.this.setOrientation(LinearLayout.VERTICAL); } /** * 此构造函数可以允许我们通过 XML的方式注册 控件 * @param context * @param attrs */ public LinearLayoutForListView(Context context, AttributeSet attrs) { super(context, attrs); LinearLayoutForListView.this.setOrientation(LinearLayout.VERTICAL); } /** * 设置适配器 * * @param adpater */ public void setAdapter(BaseAdapter adpater) { this.adapter = adpater; bindLinearLayout(); } /** * 获取适配器Adapter * * @return adapter */ public BaseAdapter getAdpater() { return adapter; } /** * 绑定布局:将每个子项的视图view添加进此线性布局LinearLayout中 */ public void bindLinearLayout() { int count = adapter.getCount(); for (int i = 0; i < count; i++) { View v = adapter.getView(i, null, null); if (i != count - 1) { //添加每项item之间的分割线 v = addLine(v); } addView(v, i); } setItemClickListener(); Log.v("countTAG", "" + count); } /** * 添加每项item之间的分割线 * * @param view * @return */ public View addLine(View view) { //分割线view View lineView = new View(view.getContext()); // 将数据从dip(即dp)转换到px,第一参数为数据原单位(此为DIP),第二参数为要转换的数据值 float fPx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) 0.5, view.getResources().getDisplayMetrics()); int iPx = Math.round(fPx); LayoutParams layoutParams = new LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, iPx); lineView.setLayoutParams(layoutParams); lineView.setBackgroundColor(view.getSolidColor()); LinearLayout ly = new LinearLayout(view.getContext()); ly.setOrientation(LinearLayout.VERTICAL); ly.addView(view); ly.addView(lineView); return ly; } /** * 设置点击子项事件监听对象 * @param onItemClickListener */ public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.onItemClickListener = onItemClickListener; setItemClickListener(); } /** * 获取点击子项事件监听对象 * @return */ }
尝试了一下,还算可以,暂时解决了,在看看有没有更好的方法。
0 0
- Scrollview中嵌套listview,显示不完全
- Android 解决scrollview中嵌套listview、GridView显示不完全问题
- ScrollView嵌套listView显示不完全对应解决方案
- ScrollView嵌套ListView数据显示不完全解决办法
- ScrollView和ListView嵌套显示不完全
- ScrollView嵌套ListView显示不完全、嵌套TextView不能滚动解决办法
- ScrollView嵌套ListView显示不完全、嵌套TextView不能滚动解决办法
- ScrollView嵌套ListView显示不完全、嵌套TextView不能滚动解决办法
- 【Android】【控件】ScrollView嵌套ListView,GridView显示不完全的解决方案
- 关于ScrollView中使用listview后listview不完全显示问题
- ScrollView中嵌套GridView显示不完全问题解决办法
- android ScrollView中嵌套ListView显示问题
- ScrollView中嵌套ListView时显示不全
- scrollview中嵌套listview 数据显示不全
- ScrollView中嵌套ListView/ExpandableListView显示问题
- ScrollView 中嵌套ListView显示问题
- android中Scrollview 嵌套ListView显示问题
- ScrollView中嵌套ListView中ListView中显示不全解决方法
- asp.net 关于UpdatePanel刷掉js的解决办法
- 错误:‘bOS::SQL::SQLCommand::SQLOperation’既不是类也不是命名空间
- jQuery通过Ajax向PHP服务端发送请求并返回JSON数据
- stl-thread-003
- Android冷门知识。读写图片Exif信息,用到了JHeader jar包
- Scrollview中嵌套listview,显示不完全
- Android 元素置于父元素底部
- 跨站点伪造请求 (CSRF)
- "app_name" is not translated in "zh" (Chinese) [MissingTranslation]解决办法
- 20 Tips To Use Google Search Efficiently
- 新装10gRACvip全部漂到了2节点上
- js字符转ascii,转unicode
- Avoid non-default constructors in fragments的解决方法
- Spring quartz的原理