Android:具有三个线性布局的水平 ScrollView

标签 android scrollview android-linearlayout

我想创建一个带有水平 ScrollView 的 Activity 。 ScrollView 的内容将是三种不同的线性布局。这些线性布局中的每一个都应该占据设备屏幕的整个宽度。因此,当 Activity 开始时,只有一个线性布局占据了屏幕的整个宽度,当用户向右滑动时,另一个线性布局将以全宽显示。 (见图)

我不确定如何设置线性布局的宽度,以便它们适合屏幕的宽度。关于如何以好的方式解决这个问题的任何想法?

This is what I need

最佳答案

我认为您必须使用 ViewFlipper 而不是 scrollView。 在 viewflipper 上使用触摸事件进行导航,并使用动画来翻转两个线性布局。

这个例子会帮助你 View Flipper example

编辑:

步骤:

  • 有一个包含 layout1、layout2、layoout3 的 ViewFlipper
  • 当前 layout1 可见。
  • 从右向左滑动以显示下一个布局。布局1 --> 布局2

动画将在此处应用于两个 View (layout1 和 layout2)。

  • 对于 layout2 -> push_right_in.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    
    <translate android:fromXDelta="100%" android:toXDelta="0%"
        android:duration="400" />
    </set>
    
  • 对于 layout1 -> push_right_out.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    
    <translate android:fromXDelta="0%" android:toXDelta="-100%"
        android:duration="400" />
    
    </set>
    
  • 然后将此动画设置为 viewflipper 的子级。

    flipper.setInAnimation(<your class>.this, R.anim.push_right_in);
    flipper.setOutAnimation(<your class>.this, R.anim.push_right_out);
    flipper.showNext();
    
    • 现在从左向右滑动以显示之前的布局。布局2 --> 布局1

动画将在此处应用于两个 View (layout1 和 layout2)。

  • 对于 layout1 -> push_left_in.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    
    <translate android:fromXDelta="-100%" android:toXDelta="0%"
    android:duration="400" />
    </set>
    
  • 对于 layout2 -> push_left_out.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    
    <translate android:fromXDelta="0%" android:toXDelta="100%"
    android:duration="400" />
    
    </set>
    
  • 然后将此动画设置为 viewflipper 的子级。

    flipper.setInAnimation(<your class>.this, R.anim.push_left_in);
    flipper.setOutAnimation(<your class>.this, R.anim.push_left_out);
    flipper.showPrevious();
    

这会给你一个流畅的动画。

关于Android:具有三个线性布局的水平 ScrollView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5714137/

相关文章:

android - 左上角所有安卓设备的屏幕上都是原点吗?

android - 如何在android中添加新联系人

android - 在 Android 中为 ListView 禁用/启用滚动

lua - 如何制作一个可以加速滚动到所有方向的 ScrollView ?

android:layout_marginBottom 底部不留空间

android - robotium中有没有类似pagefactory的模式?

android - ScrollView 隐藏底部线性布局

android - <TableLayout><TableRow><LinearLayout> 讨厌我。强制关闭运行。安卓

android - 如何在 Android 中的线性布局周围显示阴影?

java - Android Renderscript 类型与 U8_4 不匹配