2012-03-01 64 views
2

我有一個ScrollView,其中包含一個複雜的LinearLayout與各種元素,其中有幾個TextView maxHeight定義和一個長文本里面。我需要啓用滾動TextView內部的文本,並在其內部進行觸摸並拖動,並在觸摸並拖動它們時觸摸ScrollView的正常滾動。ScrollView中的多個可滾動的TextViews

是否有一個合適的和優雅的方式來做到這一點 - 如果可能的話 - 或者我必須變髒,並開始覆蓋所有涉及的元素的處理程序的onTouchEvent

UPD 1:從this判斷,沒有優雅的解決方案,並且UI將不得不重新考慮以包括僅一層可滾動元素。

+0

你有固定數量的textviews或它是動態的嗎? – mudit 2012-03-01 13:27:56

+0

只是2.現在。未來可能會更多,但佈局是靜態的,如果這是問題。 – 2012-03-01 13:58:39

回答

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); 
    } 
+0

正如你所說,這不是很美,但似乎沒有其他辦法。謝謝。 :) – 2012-03-04 07:27:22

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> 
+0

我知道。我的'ScrollView'有一個'LinearLayout'作爲孩子,我談論的'TextView'進入'LinearLayout'內部。但是我不能讓他們自己滾動,ScrollView的滾動接管了。我認爲可能存在某種導致孩子的滾動處理優先於父母的處理的屬性。 – 2012-03-01 13:57:40

0

你可以看到APIdemos的更多信息,在同一個窗口中有很多文本的風格化滾動視圖。欲瞭解更多inforation您可以訪問:

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

+0

我在API演示中唯一能找到的就是一個'ScrollView',它動態地添加了'LinearLayout'。它沒有任何東西(我可以看到)與'ScrollView'內嵌的'TextView'有關。 – 2012-03-01 13:55:39