ScrollView中的多个Scrollable TextView

时间:2012-03-01 13:14:30

标签: android textview scrollview

我有一个ScrollView,其中包含一个包含各种元素的复杂LinearLayout,其中有几个TextView,其中定义了maxHeight,内部有一个长文本。我需要在内部触摸并拖动时在TextView内滚动文字,在触摸并拖动它们时启用ScrollView的正常滚动。

是否有一种正确而优雅的方式来做到这一点 - 如果可能的话 - 或者我是否必须弄脏并开始覆盖所有涉及的元素的onTouchEvent处理程序?

UPD 1:从this判断,没有优雅的解决方案,必须重新考虑用户界面,只包含一层可滚动元素。

3 个答案:

答案 0 :(得分:5)

所以它并不漂亮,但你可以从TextView扩展并阻止滚动视图滚动。除非你的文本视图足够大,否则它不是很好。使用此解决方案后,我们发现最好是有一个“显示更多”标签,用户可以点击该标签来显示完整的内容。无论如何,从TextView扩展并覆盖onTouchEvent方法:

  public boolean onTouchEvent(MotionEvent ev) {
    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
      this.getParent().requestDisallowInterceptTouchEvent(true);
    }
    if (ev.getAction() == MotionEvent.ACTION_UP) {
      this.getParent().requestDisallowInterceptTouchEvent(false);
    }

    return super.onTouchEvent(ev);
  }

答案 1 :(得分:0)

ScrollView是一个FrameLayout,意味着您应该在其中放置一个包含要滚动的全部内容的子项;这个子本身可能是一个具有复杂对象层次结构的布局管理器。经常使用的子项是垂直方向的LinearLayout,呈现用户可以滚动的顶级项目的垂直数组。

 <ScrollView   
    android:id="@+id/ScrollView01"  
  android:layout_height="150px"   
  android:layout_width="fill_parent">  

   <TextView   
   android:id="@+id/TEXT_VIEW"   
   android:layout_height="wrap_content"   
   android:layout_width="wrap_content"   
   android:text="This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header" />  
 </ScrollView>  

答案 2 :(得分:0)

您可以看到APIdemos以获取更多信息,在同一个窗口中有一个带有自己的风格化滚动视图的大量文本视图。如需更多信息,请访问:

http://developer.android.com/resources/samples/ApiDemos/index.html