水平ScrollView无法在android中运行

时间:2017-01-31 06:03:58

标签: android imageview horizontalscrollview

我想制作一个水平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);

6 个答案:

答案 0 :(得分:2)

您应该使用 HorizontalScrollView

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

<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>

答案 1 :(得分:1)

我认为你的scrollview孩子意味着LinearLayout 在那不是什么

所以请参考此链接 [Link][1] Link

答案 2 :(得分:0)

对于水平滚动,您必须使用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>

答案 3 :(得分:0)

您应该将可滚动内容放入滚动视图

喜爱 我想制作一个水平ScrollView,但它只显示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 :(得分:0)

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

            <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"

希望这会对你有帮助;)

答案 5 :(得分:0)

尝试使用NestedScrollView而不是滚动视图 然后在Java中将添加recyclerView.setNestedScrollingEnabled(false);输入到您的RecyclerView