I want to Scrollview be fixed by touching buttons?
I want to change Scrollview by touching its bar and disable move it by touching buttons, Edit Text and so on in it. I want to create a piano app and I want to move buttons by scrollview to access all keys. please help if you have an idea.
I want to change Scrollview by touching its bar and disable move it by touching buttons, Edit Text and so on in it. I want to create a piano app and I want to move buttons by scrollview to access all keys. please help if you have an idea.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:id="@+id/scrollView_addNewBill"
tools:context="MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:descendantFocusability="beforeDescendants"
android:focusable="true"
android:focusableInTouchMode="false"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:layout_height="match_parent">
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:text="1"
android:gravity="center"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:text="2"
android:layout_gravity="center"
android:gravity="center"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:text="3"
android:gravity="center"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:text="4"
android:gravity="center"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"/>
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"/>
</LinearLayout>
</ScrollView>
You need to Intercept ScrollView Touch Events.
Use mScrollView.requestDisallowInterceptTouchEvent(true);
to disallow touch event of scrollview
In your case
buttomRecord.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
startRecording();
mScrollView.requestDisallowInterceptTouchEvent(true);
return true;
}
else if(event.getAction() == MotionEvent.ACTION_UP){
stopRecording();
mScrollView.requestDisallowInterceptTouchEvent(false);
return true;
}
return false;
}
});
By doing this, if user is clicking button then scrollview will not scroll.
Implement this for all of your views. Or it will be lengthy to set it for all buttons. For that you can implement onTouchListener for Button's parent LinearLayout.