Android ListView:幻灯片视图未显示

时间:2013-08-30 09:25:20

标签: android android-listview slide

我有一个ListView,其中每个项目都可以侧向滑动,以便另一个视图将滑入并取代它。我已经将每个列表行实现为水平RelativeLayout中的两个视图。其中一个视图最初位于屏幕之外。 enter image description here

问题是我无法使屏幕外视图在滑入屏幕时被渲染,除非它最初部分在屏幕上(如图所示),甚至这种技术似乎仅当不可见视图在右侧时才起作用。

有没有更好的方法来实现这一目标?我试图在幻灯片中调用.invalidate()和.setVisibility(VISIBLE),但没有效果。

更新

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

这是一项要求,可以通过手指拖动视图。我目前在View.OnTouchListener中监听MotionEvents来实现它。

1 个答案:

答案 0 :(得分:1)

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

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

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();

只需将视图鳍状肢放入列表视图的自定义单元格中即可。这可以处理隐藏和显示意味着你不必乱用可见等等,虽然我感谢你可能得不到完全相同的预期效果。