Android Can';t手柄在水平滚动视图的滚动条上单击
我在水平滚动视图中有一个网格布局,我正在尝试为滚动视图实现一个自定义滚动条,到目前为止,我能够自定义滚动条的用户界面[thumb and seekbar]还可以设置永久可见性。但问题是,我无法处理scrollview滚动条上的事件。如果用户在滚动条上单击,滚动视图应滚动至50%,依此类推。如单击第一个量化器滚动视图应滚动25% 如果我制作了自己的seekbar并将其绑定到scroll view,这将非常简单,它还为我提供了自己的方法和单击事件,并可以创建对象。但是我想用ScrollView的滑块来做。如何处理ScrollView的滚动条点击,我可以创建ScrollView类的对象。但它将如何控制seekbar??我没有用于水平滚动视图的onseekbarchangelistner,也没有返回任何achild视图或滚动条视图。而且它的搜索栏不可点击Android Can';t手柄在水平滚动视图的滚动条上单击,android,Android,我在水平滚动视图中有一个网格布局,我正在尝试为滚动视图实现一个自定义滚动条,到目前为止,我能够自定义滚动条的用户界面[thumb and seekbar]还可以设置永久可见性。但问题是,我无法处理scrollview滚动条上的事件。如果用户在滚动条上单击,滚动视图应滚动至50%,依此类推。如单击第一个量化器滚动视图应滚动25% 如果我制作了自己的seekbar并将其绑定到scroll view,这将非常简单,它还为我提供了自己的方法和单击事件,并可以创建对象。但是我想用ScrollView的滑块
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbarThumbHorizontal="@drawable/scrollbar_horizontal_thumb"
android:scrollbarTrackHorizontal="@drawable/scrollbar_horizontal_track"
android:visibility="visible"
android:fadeScrollbars="false"
android:id="@+id/scrollView">
<android.support.v7.widget.GridLayout
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="18"
android:orientation="horizontal"
android:rowCount="1" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_bright"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_green_light"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_bright"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_green_light"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_bright"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_bright"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_green_light"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_bright"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_green_light"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_bright"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_green_light"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_bright"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_green_light"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_bright"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_green_light"
android:padding="10dp"
android:text="Hi"
android:textSize="16sp" />
</android.support.v7.widget.GridLayout>
</HorizontalScrollView>
</RelativeLayout>
很抱歉发布此答案太晚: 要做的是:扩展一个水平滚动视图并覆盖一个方法onScrollChanged,然后得到两个坐标x1和x2。只需将指示x轴上滚动距离的实时值x1传递给seekbar setProgress(x1)方法。确保首先设置seebar的最大值[setMax()],该值等于scrollView的最大可滚动长度
public class mHorizontalScrollView extends HorizontalScrollView{
private float progress = 0.0f;
private SeekBar mSeekBar = null;
private MyActivityClass mObj = null;
private float xMax = 0.0f;
public mHorizontalScrollView(Context context, SeekBar sBar)
{
super(context);
mObj = (MyActivityClass) context; //or just use a Static reference
mSeekBar = sBar;
}
@Override
protected void onScrollChanged(int x, int y, int oldX, int oldY) {
// TODO Auto-generated method stub
int myX = x;
if(xMax == 0)
{
xMax = mObj.getMaxScrollWidth(); //Choose Your own Scrollable width or length
mSeekBar.setMax(Math.round(xMax));
}
mSeekBar.setProgress(myX);
super.onScrollChanged(x, y, oldX, oldY);
}
}
它工作得完美无缺。现在,要在滚动条和水平滚动条上实现反向滚动,滚动视图应与seekbar正确同步:
在主活动类中使用以下代码:
seek_bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar)
{
}
@Override
public void onStartTrackingTouch(SeekBar seekBar)
{
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
int currScrollPosX = progress;
mHSCV.scrollTo(progress , 0);
// mHSCV is object of mHorizontalScrollView Class
});
}
问候。发布您的代码…Jayant您找到答案了吗?