在Horizo​​ntalScrollView内的onDraw中创建的所有内容的视图不滚动

时间:2015-08-12 12:25:08

标签: android android-layout

我有这样的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:orientation="vertical">

    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/shadow_height"
        android:background="@drawable/shadow_top" />

    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true">

        <dk.somefirm.MyView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"/>

    </HorizontalScrollView>

</RelativeLayout>

MyView类扩展了View并在其onDraw方法中创建了所有内容。使用添加的android:fillViewport =“true”参数,它现在可以很好地绘制MyView,但滚动不起作用。 MyView有时比屏幕宽,应该是水平可滚动的。

我猜这是因为视图没有内容,因此宽度为零。我试图在我的代码中设置这样的宽度:

ViewGroup.LayoutParams lp = getLayoutParams();
lp.width = (int) (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ls, getResources().getDisplayMetrics()) * (savingPoints.size() + 1));
setLayoutParams(lp);

宽度是动态的,因此它必须依赖于列表元素,但它没有帮助,它不可滚动。

请问有什么问题吗?

谢谢你 索伦

1 个答案:

答案 0 :(得分:0)

将您的视图置于如下线性布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@color/white"
  android:orientation="vertical" >

<View
    android:layout_width="match_parent"
    android:layout_height="@dimen/shadow_height"
    android:background="@drawable/shadow_top" />

<HorizontalScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <dk.somefirm.MyView
            android:layout_width="wrap_content"
            android:layout_height="match_parent" />
    </LinearLayout>
 </HorizontalScrollView>