【问题标题】:Horizontal ScrollView not work in android水平滚动视图在android中不起作用
【发布时间】:2017-01-31 06:03:57
【问题描述】:

我想制作一个 Horizo​​ntal ScrollView,但它只显示 1 张图像,其他图像隐藏,但垂直时效果很好。我希望它以水平显示而不是隐藏。这是我的 xml 代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
    android:layout_width="100dp"
    android:layout_height="110dp"
    app:srcCompat="@mipmap/ic_launcher"
    android:id="@+id/ivgallery"
    tools:ignore="ContentDescription"/>
<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    app:srcCompat="@android:drawable/btn_dialog"
    android:id="@+id/ivupload"
    tools:ignore="ContentDescription"/>

<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="horizontal">
        <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        android:layout_gravity="center_horizontal"
        android:id="@+id/linearmain"/>
</ScrollView>
</LinearLayout>

这是我的java代码:

Bitmap bitmap = PhotoLoader.init().from(photopath).requestSize(512, 512).getBitmap();
final ImageView imageView = new ImageView(getApplicationContext());
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
imageView.setLayoutParams(layoutParams);
imageView.setMaxWidth(250);
imageView.setMaxHeight(250);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(0, 10, 0, 0);
imageView.setAdjustViewBounds(true);
imageView.setImageBitmap(bitmap);

【问题讨论】:

    标签: android imageview horizontalscrollview


    【解决方案1】:

    你应该使用 HorizontalScrollView

    Horizo​​ntalScrollView 仅支持水平滚动。对于垂直滚动,请使用 ScrollViewListView

    <HorizontalScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:scrollbars="horizontal">
    
        <LinearLayout
            android:id="@+id/linearmain"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            android:orientation="horizontal" />
    
    </HorizontalScrollView>
    

    【讨论】:

      【解决方案2】:

      我认为你的滚动视图子意味着 LinearLayout 在那个什么都没有

      所以请参考这个链接 [Link][1]Link

      【讨论】:

      【解决方案3】:

      你应该把你的可滚动内容放到滚动视图中

      最喜欢的 我想制作一个水平滚动视图,但它只显示 1 个图像,其他图像被隐藏,但什么时候是垂直的效果很好。我希望它以水平显示而不是隐藏。这是我的 xml 代码:

      <ScrollView
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:scrollbars="horizontal">
              <LinearLayout
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="horizontal"
              android:layout_gravity="center_horizontal"
              android:id="@+id/linearmain">
      
      <ImageView
          android:layout_width="100dp"
          android:layout_height="110dp"
          app:srcCompat="@mipmap/ic_launcher"
          android:id="@+id/ivgallery"
          tools:ignore="ContentDescription"/>
      <ImageView
          android:layout_width="100dp"
          android:layout_height="100dp"
          app:srcCompat="@android:drawable/btn_dialog"
          android:id="@+id/ivupload"
          tools:ignore="ContentDescription"/>
      
              </LinearLayout>
      </ScrollView>
      </LinearLayout>
      

      【讨论】:

      • 我将可滚动内容放入滚动视图,但应用崩溃了
      【解决方案4】:

      对于水平滚动,您必须使用 Horizo​​ntalScrollView

      所以替换这个

      <ScrollView
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:scrollbars="horizontal">
      
          <LinearLayout
              android:id="@+id/linearmain"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:layout_gravity="center_horizontal"
              android:orientation="horizontal" />
      </ScrollView>
      

      <HorizontalScrollView
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:scrollbars="horizontal">
      
          <LinearLayout
              android:id="@+id/linearmain"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:layout_gravity="center_horizontal"
              android:orientation="horizontal" />
      
      </HorizontalScrollView>
      

      【讨论】:

        【解决方案5】:

        你可以试试这个,改变你的元素水平滚动视图:

                    <package_name.HorizontalListView
                    android:id="@+id/hlvCustomList"
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:layout_gravity="center_vertical"
                    android:layout_alignParentTop="true"
                    android:layout_toEndOf="@+id/add_image"
                    android:focusable="false"
                    android:focusableInTouchMode="false"
                    android:descendantFocusability="blocksDescendants" />
        

        在您的水平元素中,这是 :

        的关键
                    android:focusable="false"
                    android:focusableInTouchMode="false"
                    android:descendantFocusability="blocksDescendants"
        

        希望对你有所帮助;)

        【讨论】:

          【解决方案6】:

          尝试使用NestedScrollView而不是滚动视图 并在java中输入添加recyclerView.setNestedScrollingEnabled(false);到你的RecyclerView

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-07-13
            • 1970-01-01
            • 1970-01-01
            • 2014-04-20
            相关资源
            最近更新 更多