是否有可能使ListView水平?我使用图库视图完成了此操作,但所选项目会自动出现在屏幕的中心。我不希望选中的项目位于我点击的同一位置。我该如何纠正这个问题?我的想法是用水平滚动来设置ListView。分享你的想法?


当前回答

你总是可以创建你的textviews等动态和设置你的onclicklistener,就像你会做一个适配器

其他回答

@Paul回答链接到一个伟大的解决方案,但代码不允许对项目的孩子使用onClickListeners(回调函数永远不会被调用)。我一直在努力寻找一个解决方案,我决定在这里张贴你需要修改的代码(以防有人需要它)。

而不是重写dispatchTouchEvent重写onTouchEvent。使用dispatchTouchEvent的相同代码并删除方法(您可以在这里阅读两者之间的区别http://developer.android.com/guide/topics/ui/ui-events.html#EventHandlers)

@Override
public boolean onTouchEvent(MotionEvent event) {
    boolean handled = mGesture.onTouchEvent(event);
    return handled;
}

然后,添加下面的代码,它将决定从子项中窃取事件,并将其交给我们的onTouchEvent,或让它由它们处理。

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    switch( ev.getActionMasked() ){
        case MotionEvent.ACTION_DOWN:
             mInitialX = ev.getX();
             mInitialY = ev.getY();             
             return false;
        case MotionEvent.ACTION_MOVE:
             float deltaX = Math.abs(ev.getX() - mInitialX);
             float deltaY = Math.abs(ev.getY() - mInitialY);
             return ( deltaX > 5 || deltaY > 5 );
        default:
             return super.onInterceptTouchEvent(ev);
    }
}

最后,不要忘记在你的类中声明变量:

private float mInitialX;
private float mInitialY;

你可以使用ViewFlipper来包含布局XML,并为每个布局XML添加图像、列表视图

这不是一个很好的答案,但是如何使用水平滚动视图呢?

其实很简单: 简单地旋转列表视图躺在它的一边

mlistView.setRotation(-90);

然后在膨胀子对象时,它应该在getView方法中。你让孩子们站直:

 mylistViewchild.setRotation(90);

编辑: 如果你的ListView在旋转后不合适,把ListView放在这个RotateLayout中,就像这样:

 <com.github.rongi.rotate_layout.layout.RotateLayout
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:angle="90"> <!-- Specify rotate angle here -->

    <ListView
       android:layout_width="match_parent"
       android:layout_height="match_parent">
    </ListView>
</com.github.rongi.rotate_layout.layout.RotateLayout>

我在自己的一个项目中也做了同样的事情,最后我也写了自己的项目。我称之为HorzListView现在是我的开源Aniqroid库的一部分。

http://aniqroid.sileria.com/doc/api/(在底部寻找下载或使用谷歌代码项目查看更多下载选项:http://code.google.com/p/aniqroid/downloads/list)

类文档在这里:http://aniqroid.sileria.com/doc/api/com/sileria/android/view/HorzListView.html