我总是在ScrollView中使用按钮,但如果我使用以下代码,ImageButton的执行速度会大大降低。
<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="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/scrollView2"
android:clickable="true"
android:layout_gravity="center">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:paddingTop="10dip"
android:background="@android:color/darker_gray">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/custombtn"
android:id="@+id/button5"
android:src="@drawable/favorites"
android:minHeight="90dip"
android:singleLine="false"
android:minWidth="90dip"
android:layout_marginRight="10dp" />
</LinearLayout>
</ScrollView>
</LinearLayout>
如何保留ScrollView中的所有内容并使ImageButton onTouchEvent更快?
我认为ScrollView覆盖了整个图层,一旦我尝试按下ImageButton,它实际上首先与ScrollView进行交互,然后是ImageButton,这是&#34;背后&#34;它。我的假设是否正确?我该怎么做呢?
提前谢谢。
答案 0 :(得分:1)
ScrollView内的按钮在按下时响应相对较慢的原因是因为确定触摸是滚动/滑动事件的开始还是长按事件的开始有轻微的延迟。
如果用户实际滚动但恰好在按钮上开始滑动,则此延迟是为了避免按下动画按钮。
但是,如果您快速点按ScrollView内的按钮,则会看到响应良好。
要使按钮更具响应性,您可以按照How can I make a Button more responsive?中的建议扩展Button类并覆盖onTouchEnd方法。
public boolean onTouchEvent (MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
setPressed(true);
}
return super.onTouchEvent(event);
}