Android 实现左右两个ListView共同滑动
来源:互联网 发布:2016酒店业数据 编辑:程序博客网 时间:2024/05/24 04:19
/**
* 实现左右两个ListView共同滑动,并且保持第一个ListView锁定
*
*/
public class TwoListViewLayout extends RelativeLayout {
private LinearLayout mLeft, mRight;
private RelativeLayout mLeftHeader, mRightheader;
private SynchScrollListView mlvLeft, mlvRight;
private HorizontalScrollView mScroll;
public TwoListViewLayout(Context context) {
super(context);
init(context, null);
}
public TwoListViewLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
public TwoListViewLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context, attrs);
}
/**
* 初始化
*
* @param context
*/
private void init(Context context, AttributeSet attrs) {
final LayoutInflater li = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
li.inflate(R.layout.two_listview, this);
mLeft = (LinearLayout) findViewById(R.id.left);
mRight = (LinearLayout) findViewById(R.id.right);
mLeftHeader = (RelativeLayout) findViewById(R.id.left_header);
mRightheader = (RelativeLayout) findViewById(R.id.right_header);
mlvLeft = (SynchScrollListView) findViewById(R.id.left_listview);
mlvRight = (SynchScrollListView) findViewById(R.id.right_listview);
mScroll = (HorizontalScrollView) findViewById(R.id.right_scrollview);
if (attrs != null) {
final TypedArray a = getContext().obtainStyledAttributes(attrs,
R.styleable.listView, 0, 0);
final LinearLayout.LayoutParams leftP = new LinearLayout.LayoutParams(
a.getLayoutDimension(R.styleable.listView_leftWidth,
"leftWidth"),// (R.styleable.listView_leftWidth,
// ViewGroup.LayoutParams.WRAP_CONTENT),
a.getLayoutDimension(R.styleable.listView_leftHeight,
"leftHeight"));// a.getDimensionPixelSize(R.styleable.listView_leftHeight,
// ViewGroup.LayoutParams.WRAP_CONTENT));
mlvLeft.setLayoutParams(leftP);
final LinearLayout.LayoutParams rightP = new LinearLayout.LayoutParams(
a.getLayoutDimension(R.styleable.listView_rightWidth,
"rightWidth"),// a.getDimensionPixelSize(R.styleable.listView_rightWidth,
// ViewGroup.LayoutParams.WRAP_CONTENT),
a.getLayoutDimension(R.styleable.listView_rightHeight,
"rightHeight"));// a.getDimensionPixelSize(R.styleable.listView_rightHeight,
// ViewGroup.LayoutParams.WRAP_CONTENT));
mlvRight.setLayoutParams(rightP);
a.recycle();
}
}
/**
* 获得左列表的表头
*
* @return a View is left table header
*/
public View getLeftHeader() {
return mLeftHeader.getChildAt(0);
}
/**
* 添加左列表的表头
*
* @param header
*/
public void setLeftHeader(View header) {
mLeftHeader.removeAllViews();
mLeftHeader.addView(header);
requestLayout();
}
public void setLeftHeader(View header, ViewGroup.LayoutParams lp) {
mLeftHeader.removeAllViews();
mLeftHeader.addView(header, lp);
requestLayout();
}
/**
* 获得右列表的表头
*
* @return a View is left table header
*/
public View getRightHeader() {
return mRightheader.getChildAt(0);
}
/**
* 添加右列表的表头
*
* @param header
*/
public void setRightHeader(View header) {
mRightheader.removeAllViews();
mRightheader.addView(header);
requestLayout();
}
public void setRightHeader(View header, ViewGroup.LayoutParams lp) {
mRightheader.removeAllViews();
mRightheader.addView(header, lp);
requestLayout();
}
/**
* 获得左列表
*
* @return
*/
public ListView getLeftListView() {
return mlvLeft;
}
/**
* 获得右列表
*
* @return
*/
public ListView getRightListView() {
return mlvRight;
}
/**
* 双列表联动, 使两列表实现同步滑动
*/
public void linkage() {
mlvLeft.linkListView(mlvRight);
mlvRight.linkListView(mlvLeft);
}
}
* 实现左右两个ListView共同滑动,并且保持第一个ListView锁定
*
*/
public class TwoListViewLayout extends RelativeLayout {
private LinearLayout mLeft, mRight;
private RelativeLayout mLeftHeader, mRightheader;
private SynchScrollListView mlvLeft, mlvRight;
private HorizontalScrollView mScroll;
public TwoListViewLayout(Context context) {
super(context);
init(context, null);
}
public TwoListViewLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
public TwoListViewLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context, attrs);
}
/**
* 初始化
*
* @param context
*/
private void init(Context context, AttributeSet attrs) {
final LayoutInflater li = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
li.inflate(R.layout.two_listview, this);
mLeft = (LinearLayout) findViewById(R.id.left);
mRight = (LinearLayout) findViewById(R.id.right);
mLeftHeader = (RelativeLayout) findViewById(R.id.left_header);
mRightheader = (RelativeLayout) findViewById(R.id.right_header);
mlvLeft = (SynchScrollListView) findViewById(R.id.left_listview);
mlvRight = (SynchScrollListView) findViewById(R.id.right_listview);
mScroll = (HorizontalScrollView) findViewById(R.id.right_scrollview);
if (attrs != null) {
final TypedArray a = getContext().obtainStyledAttributes(attrs,
R.styleable.listView, 0, 0);
final LinearLayout.LayoutParams leftP = new LinearLayout.LayoutParams(
a.getLayoutDimension(R.styleable.listView_leftWidth,
"leftWidth"),// (R.styleable.listView_leftWidth,
// ViewGroup.LayoutParams.WRAP_CONTENT),
a.getLayoutDimension(R.styleable.listView_leftHeight,
"leftHeight"));// a.getDimensionPixelSize(R.styleable.listView_leftHeight,
// ViewGroup.LayoutParams.WRAP_CONTENT));
mlvLeft.setLayoutParams(leftP);
final LinearLayout.LayoutParams rightP = new LinearLayout.LayoutParams(
a.getLayoutDimension(R.styleable.listView_rightWidth,
"rightWidth"),// a.getDimensionPixelSize(R.styleable.listView_rightWidth,
// ViewGroup.LayoutParams.WRAP_CONTENT),
a.getLayoutDimension(R.styleable.listView_rightHeight,
"rightHeight"));// a.getDimensionPixelSize(R.styleable.listView_rightHeight,
// ViewGroup.LayoutParams.WRAP_CONTENT));
mlvRight.setLayoutParams(rightP);
a.recycle();
}
}
/**
* 获得左列表的表头
*
* @return a View is left table header
*/
public View getLeftHeader() {
return mLeftHeader.getChildAt(0);
}
/**
* 添加左列表的表头
*
* @param header
*/
public void setLeftHeader(View header) {
mLeftHeader.removeAllViews();
mLeftHeader.addView(header);
requestLayout();
}
public void setLeftHeader(View header, ViewGroup.LayoutParams lp) {
mLeftHeader.removeAllViews();
mLeftHeader.addView(header, lp);
requestLayout();
}
/**
* 获得右列表的表头
*
* @return a View is left table header
*/
public View getRightHeader() {
return mRightheader.getChildAt(0);
}
/**
* 添加右列表的表头
*
* @param header
*/
public void setRightHeader(View header) {
mRightheader.removeAllViews();
mRightheader.addView(header);
requestLayout();
}
public void setRightHeader(View header, ViewGroup.LayoutParams lp) {
mRightheader.removeAllViews();
mRightheader.addView(header, lp);
requestLayout();
}
/**
* 获得左列表
*
* @return
*/
public ListView getLeftListView() {
return mlvLeft;
}
/**
* 获得右列表
*
* @return
*/
public ListView getRightListView() {
return mlvRight;
}
/**
* 双列表联动, 使两列表实现同步滑动
*/
public void linkage() {
mlvLeft.linkListView(mlvRight);
mlvRight.linkListView(mlvLeft);
}
}
阅读全文
3 0
- Android 实现左右两个ListView共同滑动
- android 实现Listview左右滑动删除Item
- listview左右滑动动画实现
- Android酱油笔记之左右滑动的ListView实现
- Android 使用Scroller实现ListView左右滑动删除Item效果
- Android-实现ListView左右滑动删除和编辑(仿微信电话本)
- 使用NineOldAndroids 实现 Android ListView左右滑动删除效果
- android 实现左右滑动
- 用HorizontalScrollView实现listview的左右滑动
- android listview item 左右滑动删除
- android Gallery模拟左右滑动的listView
- android 左右滑动效果实现
- Android实现左右滑动效果
- Android实现左右滑动效果
- android 实现左右滑动效果
- Android实现左右滑动效果
- android实现左右滑动界面
- Android实现左右滑动效果
- 树链剖分总结
- [leetcode]Binary Tree Postorder Traversal
- JMS java 消息机制
- 数字货币开发专题(PoS挖矿教程普通电脑即可挖矿)
- 线上运维哪些事
- Android 实现左右两个ListView共同滑动
- SpringMVC 视图解析器
- 单调栈——hdu5726 GCD
- Ubuntu下如何安装TensorFlow
- 【二】【selenium+python】发现页面元素的方法介绍
- <table>中的<td>表示table data(表格数据),<tr>表示table row(表格行),<th>表示table head(表格头)
- P2P点对点通讯
- 宗教的本质及其起源
- PRML读书会第六章 Kernel Methods(核函数,线性回归的Dual Representations,高斯过程 ,Gaussian Processes)