2017-05-29 38 views
0

複数行のtextviewをlistviewでスクロール可能にしようとしていますが、失敗しています。 ここにあるいくつかのコード私が持っている:複数行のTextviewをListViewでスクロール可能にする

myCommentTextView.setMovementMethod(new ScrollingMovementMethod());` 

<TextView 
     android:id="@+id/textViewComment" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:scrollbarAlwaysDrawHorizontalTrack="false" 
     android:scrollbarAlwaysDrawVerticalTrack="true" 
     android:overScrollMode="always" 
     android:scrollbarStyle="insideOverlay" 
     android:scrollbars="vertical" 
     android:text="Comment" 
     android:textSize="14sp" 
     android:typeface="normal" /> 

SOを検索した後、誰かがこの答えを示唆した:私は作ってみました

class MyTextView extends TextView 
{ 

    public MyTextView(Context context) 
    { 
    super(context); 
    // TODO Auto-generated constructor stub 
    } 

    @Override 
    public boolean dispatchTouchEvent(MotionEvent event) 
    { 
    boolean ret; 
    ret = super.dispatchTouchEvent(event); 
    if(ret) 
    { 
     list.requestDisallowInterceptTouchEvent(true); 
    } 
    return ret; 
    } 

} 

(私は保存リンクをコピーしますが忘れることができました)カスタムこのようなクラスが、アンドロイドスタジオショーの赤(android.support.v7.widget.appcompatTextViewを拡張する必要があります)ラインlist.requestDisallowInterceptTouchEvent(true);(メソッドを解決することはできません)とextends TextViewで下線

ここでは、私のクラスである。

import android.content.Context; 
import android.view.MotionEvent; 
import android.widget.TextView;  
import java.util.List; 


    public class MyTextView extends TextView { 

     public MyTextView(Context context) 
     { 
      super(context); 
      // TODO Auto-generated constructor stub 
     } 
     public boolean dispatchTouchEvent(MotionEvent event) 
     { 
      boolean ret; 
      ret = super.dispatchTouchEvent(event); 
      if(ret) 
      { 
       List.requestDisallowInterceptTouchEvent(true); 

      } 
      return ret; 
     } 

    } 

なぜ私は理解していないにもかかわらず、私は理解していないのに、それは受け入れられた答えであったので、ソースからOKだと思われた。しかし、最も重要なコードList.requestDisallowInterceptTouchEvent(true);はエラーのままです。

これを修正するにはどうすればよいですか?

+0

試し 'アンドロイド:MAXLINES = "5" // uは何が必要'、ここで重要です。 –

+0

それを試してもうまくいきませんでした。問題はリストビューがフォーカス/タッチリスナーを引き継いでいると思います。リスト全体がスクロールされ、テキストビューをタッチしてスクロールしても –

答えて

0

私は答えを見つけたが、requestDisallowInterceptTouchEventは確か

View.OnTouchListener listener = new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       boolean isLarger; 

       isLarger = ((TextView) v).getLineCount() 
         * ((TextView) v).getLineHeight() > v.getHeight(); 
       if (event.getAction() == MotionEvent.ACTION_MOVE 
         && isLarger) { 
        v.getParent().requestDisallowInterceptTouchEvent(true); 

       } else { 
        v.getParent().requestDisallowInterceptTouchEvent(false); 

       } 
       return false; 
      } 
     }; 

     holder.comment.setOnTouchListener(listener); 
関連する問題