我有一个网格视图,其中我使用{background imageview包含一个imageview,两个textview垂直对齐图像}和另一个布局{text image包含三个垂直对齐图像的文本视图}。
我在textview中限制了最大行数。 请建议如何在gridview中滚动textview,我希望gridview项目可以点击,这将在项目点击时导航到下一个屏幕。
我尝试使用requestDisallowInterceptTouchEvent方法使可滚动的textview在gridview内部工作。但我没有得到预期的结果。当使用setscrollingmovement()方法时,textview变得不可点击,因此这也无效。
我无法将该方案发布为图片,因为我没有足够的信誉来发布图片。图片已在google drive中上传。请使用以下链接查看图片。
https://drive.google.com/file/d/0B45x-sgFopMBMUJOaHk0NWlkMzQ/edit?usp=sharing
答案 0 :(得分:1)
我得到了它的工作:-)但部分。我在gridview项目的自定义布局(膨胀布局)的根布局中使用了android:descendantFocusability="blocksDescendants"
。事情是onclick在textiew之外工作。
因此,textview在背景图像上的某处滚动并单击textview外部会触发网格视图的onClickListener()
但是在点击textview时无法触发gridview的onclicklistener()。需要研究这个问题。
来自stackoverflow链接的建议:Referred Link
编辑:gridview中的可滚动和可点击的textview - 使用onTouchlistener获得解决方法
在gridview的适配器类中为textview设置下面的ontouch click listener将允许你滚动文本以及触发GridView的onItemClick。
OnTouchListener aListener = new OnTouchListener() {
long startTouchTime = 0;
@Override
public boolean onTouch(View v,
MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.e("ACTION_DOWN",
"ACTION_DOWN, intercept true");
startTouchTime = (System
.currentTimeMillis());
// To scroll the textview set this
textview
.setMovementMethod(new ScrollingMovementMethod());
v.getParent()
.requestDisallowInterceptTouchEvent(
true);
break;
case MotionEvent.ACTION_UP:
Log.e("ACTION_UP",
"Call onitemclick"
+ ((System
.currentTimeMillis()) - startTouchTime));
if ((System.currentTimeMillis())
- startTouchTime < 200)
// To call gridview onItemClick here
myGridActivity.myGridView
.getOnItemClickListener()
.onItemClick(
null,
myGridActivity.myGridView,
(Integer) imageView
.getTag(), // Setting the position here through imageview set tag
(long) 6767);
break;
}
if (event.getAction() == MotionEvent.ACTION_MOVE) {
Log.e("ACTION_MOVE",
"ACTION_MOVE, intercept true");
v.getParent()
.requestDisallowInterceptTouchEvent(
true);
} else {
Log.e("Other", "Intercept false");
v.getParent()
.requestDisallowInterceptTouchEvent(
true);
}
return false;
}
};
textview.setOnTouchListener(aCBInfoListener);
设置android:scrollbars="vertical"
以便滚动文本视图。
答案 1 :(得分:0)
试试这个:
布局的xml文件中TextView的属性:
android:maxLines = "INTEGER"
android:scrollbars = "vertical"
然后使用:
yourTextView.setMovementMethod(new ScrollingMovementMethod())
代码。
它会正常工作..
或者您可以将TextView放入ScrollView:
<ScrollView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_weight="1">
<TextView android:id="@+id/TextView01" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Testin testin testing "></TextView>
</ScrollView>