在ScrollView中使用ImageView中的Zoom

时间:2013-07-16 09:32:22

标签: android imageview zoom scrollview

我正在尝试在zoom中使用ImageView。我搜索并尝试了很多代码,但问题是我在ImageView内有ScrollView因为我有其他一些对象。

如果尝试,

This是最后一个代码。

这是 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无效。有没有办法解决ImageViewScrollView与其他一些对象的问题?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

让我的布局保持原样,点击ImageView时,使用that question上的Mike Ortiz代码转到只有Image的新广告。

答案 2 :(得分:0)

@Zielony 提供的答案为我澄清了一些事情,因为我正在努力解决类似的问题。我在 scrollView 中有一个可缩放的图像视图,这两个视图相互冲突。所以我创建了一个自定义的 scrollView,它只在一根手指触摸屏幕时拦截触摸事件。因此,您将能够用两根手指与 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
       }
    }
}