android 如何在滚动时动态移动视图

How to move views dynamically on scroll in android

我正在做作业,要求在用户滚动列表时动态调整视图宽度和高度。

提议的屏幕将包含两部分

一个。

的线性布局
  1. 图像视图
  2. 文本视图和
  3. 垂直按钮。

B.Scroll 视图(在线性布局下方)- 这将在内部包含一些子视图。

最初 LinearLayout 应按垂直(固定高度和宽度)顺序显示其成员,但一旦用户向上滚动,它应将其成员更改为水平(高度和宽度减小以水平固定在屏幕中)

滚动视图只有一个父子视图。 在 scrollview 之后创建一个 Linear Layout 然后在里面实现你的代码..

喜欢下面的代码...

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/txt"/>
</LinearLayout>

子类化滚动视图并覆盖 it.In 中的 onScrollChanged 方法 onScrollChanged 方法更改顶部线性布局(即垂直线性布局)的方向

  public class MyScrollView extends ScrollView {

    public MyScrollView(Context context) {
      super(context);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
      super.onScrollChanged(l, t, oldl, oldt);
      linearLayout.setOrientation(LinearLayout.HORIZONTAL);
    }
  }

或者您可以像下面这样添加滚动更改侦听器来完成

scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {

  @Override
  public void onScrollChanged() {

    int scrollY = scrollView.getScrollY();
    linearLayout.setOrientation(LinearLayout.HORIZONTAL);

  }
});