1

我正在尝试zoomImageView. 我已经搜索并尝试了很多代码,但问题是我在ImageView里面,ScrollView因为我还有一些其他对象。

如果尝试,这是最后一个代码。

这是xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    tools:context=".ConsumoActivity"
    android:orientation="vertical" >

    <LinearLayout 
        android:id="@+id/linearLayoutLogoFactor_consumo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" >

        <ImageView 
            android:id="@+id/imageViewLogoFactor_consumo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/logo_factorenergia" />

    </LinearLayout>

    <ScrollView
        android:id="@+id/scrollViewConsumo"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true" >

        <LinearLayout
            android:id="@+id/linearLayoutConsumo2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_gravity="center_horizontal"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:orientation="vertical" >

            <TextView 
                android:id="@+id/textViewVerConsumo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:text="@string/etiqueta_ver_consumo"
                android:textSize="@dimen/textSize"
                android:layout_marginTop="10dp"
                android:textStyle="italic"
                android:textColor="#79b7e3" />

            <LinearLayout 
                android:id="@+id/linearLayoutDireccionConsumo"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_marginTop="10dp"
                android:weightSum="1.0">

                <TextView
                    android:id="@+id/textViewlabelDireccionConsumo"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="0.3"
                    android:text="@string/etiqueta_direccion"
                    android:textSize="@dimen/textSize"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/textViewDireccionConsumo"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="0.7"
                    android:textSize="@dimen/textSize" />

            </LinearLayout>

            <com.example.factorenergia.CustomImageView
                android:id="@+id/imageViewConsumo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="15dp"
                android:adjustViewBounds="true" 
                android:scaleType="matrix" />

            <RelativeLayout
                android:id="@+id/linearLayoutImagenInferior_consumo"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_marginTop="20dp" >

                <ImageView
                    android:id="@+id/imageViewImagenInferior_consumo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_centerHorizontal="true"
                    android:adjustViewBounds="true"
                    android:src="@drawable/la_electrica_de_las_empresas" />
            </RelativeLayout>

        </LinearLayout>

    </ScrollView>

</LinearLayout>

图像正常,但scroll无法正常工作。有什么办法可以解决ImageView里面ScrollView有其他一些物体的问题吗?

4

3 回答 3

1

这可能是因为重写的 ImageView 正在处理所有触摸事件。它应该只需要两个手指事件并将其余的事件传递回父级。当事件不适用于您的 ImageView 时,您应该从 onTouchEvent 返回 false。

第二个选项是在 ScrollView 的 dispatchTouchEvent 方法中处理事件。您可以在 ScrollView 中处理单指事件并将其余事件传递给子项。不建议这样做,因为它可能会损坏很多。

于 2013-07-16T09:44:32.150 回答
1

我使用了一个简单的解决方案:

让我的布局保持原样,并在ImageView单击时转到一个只有 的新布局,在那个问题Image上使用 Mike Ortiz 代码。

于 2013-07-17T07:49:52.360 回答
0

@Zielony 提供的答案为我澄清了一些事情,因为我正在努力解决类似的问题。我在滚动视图中有一个可缩放的图像视图,这两个视图都是冲突的。所以我创建了一个自定义的滚动视图,它仅在一根手指触摸屏幕时才拦截触摸事件。因此,您将能够用两根手指与 imageview 缩放功能进行交互,并用一根手指滚动我们的自定义 scrollView。

class CustomScrollView @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0) : ScrollView(context, attrs, defStyleAttr) {

    override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
       return if (ev.pointerCount < 2) {
           super.onInterceptTouchEvent(ev)
       } else {
           false
       }
    }
}
于 2021-01-27T16:49:03.133 回答