listview橫向滑動很少使用,但是有時候也會用到,我也是在網上看到了大神自定義了乙個listview可以橫向滑動。試了下很不錯,希望大家能用的上。自定義**如下:
public class horizontallistview extends adapterview
private synchronized void initview()
@override
public void setonitemselectedlistener(
adapterview.onitemselectedlistener listener)
@override
public void setonitemclicklistener(adapterview.onitemclicklistener listener)
@override
public void setonitemlongclicklistener(
adapterview.onitemlongclicklistener listener)
private datasetobserver mdataobserver = new datasetobserver()
invalidate();
requestlayout();
} @override
public void oninvalidated()
}; @override
public listadapter getadapter()
@override
public view getselectedview()
@override
public void setadapter(listadapter adapter)
madapter = adapter;
madapter.registerdatasetobserver(mdataobserver);
reset();
} private synchronized void reset()
@override
public void setselection(int position)
private void addandmeasurechild(final view child, int viewpos)
addviewinlayout(child, viewpos, params, true);
child.measure(
measurespec.makemeasurespec(getwidth(), measurespec.at_most),
measurespec.makemeasurespec(getheight(), measurespec.at_most));
} @override
protected synchronized void onlayout(boolean changed, int left, int top,
int right, int bottom)
if (mdatachanged)
if (mscroller.computescrolloffset())
if (mnextx <= 0)
if (mnextx >= mmaxx)
int dx = mcurrentx - mnextx;
removenonvisibleitems(dx);
filllist(dx);
positionitems(dx);
mcurrentx = mnextx;
if (!mscroller.isfinished())
});} }
private void filllist(final int dx)
filllistright(edge, dx);
edge = 0;
child = getchildat(0);
if (child != null)
filllistleft(edge, dx);
} private void filllistright(int rightedge, final int dx)
if (mmaxx < 0)
mrightviewindex++;
} }private void filllistleft(int leftedge, final int dx)
} private void removenonvisibleitems(final int dx)
child = getchildat(getchildcount() - 1);
while (child != null && child.getleft() + dx >= getwidth())
} private void positionitems(final int dx)
} }public synchronized void scrollto(int x)
@override
public boolean dispatchtouchevent(motionevent ev)
protected boolean onfling(motionevent e1, motionevent e2, float velocityx,
float velocityy)
requestlayout();
return true;
} protected boolean ondown(motionevent e)
private ongesturelistener mongesture = new gesturedetector.******ongesturelistener()
@override
public boolean onfling(motionevent e1, motionevent e2, float velocityx,
float velocityy)
@override
public boolean onscroll(motionevent e1, motionevent e2,
float distancex, float distancey)
requestlayout();
return true;
} @override
public boolean onsingletapconfirmed(motionevent e)
if (monitemselected != null)
break;}}
return true;
} @override
public void onlongpress(motionevent e)
break;}}
} private boolean iseventwithinview(motionevent e, view child)
};}
UITableView 的橫向滑動實現
為了實現橫向滑動的控制項,可以繼承類 uiscrollview 或類 uiview 自定義可以橫向滑動的控制項,這裡通過 uitableview 的旋轉,實現可以橫向滑動的控制項。先說明與實現相關的幾個概念 自定義乙個 uiview 的子類 horizontaltableview 在其中新增乙個 u...
橫向滑動(scroll view)巢狀for迴圈
1 設定橫向滑動 scroll x true 2 scroll view設定寬度及white space屬性。3 item設定display inline block屬性。xml布局 container scroll x true設定橫向滑動 scroll view設定寬度 true item co...
可橫向或部分橫向滑動的列表實現
先看下效果 首先需要構造乙個header部分,header部分分為固定header和滑動header,滑動header採用橫向scrollview實現 private void bindheader rightheader new linearlayout context for string st...