1

我有一个 ListView ,其中每个项目都可以横向滑动,以便另一个视图滑入并取代它。我已将每个列表行实现为水平 RelativeLayout 内的两个视图。其中一个视图最初位于屏幕之外。 在此处输入图像描述

问题是我无法使屏幕外视图在滑入屏幕时呈现出来,除非它最初部分在屏幕上(如图所示),即使这种技术似乎也只有在看不见的视图在右边。

有没有更好的方法来实现这一点?我曾尝试在幻灯片期间调用 .invalidate() 和 .setVisibility(VISIBLE),但没有效果。

更新:

渲染的问题似乎是 Initially hidden 视图始终具有宽度 0,即使我尝试在滑动期间以编程方式更改它。我在两个视图周围使用了 RelativeLayout,以使可见视图完全适合屏幕。

要求可以用手指拖动视图。我目前在 View.OnTouchListener 中收听 MotionEvents 以完成此操作。

4

1 回答 1

1

您的问题非常模糊,因为您没有提供任何代码或滑入/滑出视图的方法。如果您还没有使用 View Switcher 或 ViewFlipper,这还不够吗?

您还可以使用http://developer.android.com/reference/android/widget/ViewSwitcher.htm获得滑动效果,这仅允许 2 个视图,并且将通过动画将一个视图滑入,另一个视图滑出 - 这可能是更接近您的要求,但有一些小缺点。视图滑块的工作方式与视图翻转器类似(这使您可以拥有多个视图),下面是视图翻转器的一些示例代码。

http://developer.android.com/reference/android/widget/ViewFlipper.html

<ViewFlipper
    android:id="@+id/flipper"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

    YOUR VIEWS

    </LinearLayout>

   <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

      YOUR VIEWS

    </LinearLayout>

</ViewFlipper>

然后,您可以附加自己的动画并在滑动或其他操作上调用 showNext 以在两个视图之间设置动画(在您的情况下,滑入和滑出动画)

/* Flipper animations */
yourFlipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.slide_in));
yourFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out));

youFlipper.showNext();

只需将视图翻转器放在列表视图的自定义单元格中。这处理隐藏和显示意味着您不必搞乱可见等,尽管我很欣赏您可能无法获得完全相同的预期效果。

于 2013-08-30T09:51:12.880 回答