我正在尝试在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
无效。有没有办法解决ImageView
内ScrollView
与其他一些对象的问题?
答案 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
}
}
}