2010-11-30 6 views
6

レイアウトにEditTextがあります。以下は、私が現在持っている属性です:EditText Androidでスクロールバーを有効にする

<EditText 
    android:id="@+id/entryIdea" 
    android:layout_width="fill_parent" 
    android:layout_height="225sp" 
    android:gravity="top" 
    android:background="@android:drawable/editbox_background" 
    android:scrollbars="vertical"/> 

しかし、私はスクロールバーを見ることができますが、マウス/タッチでスクロールすることはできません。 TextViewで動作するので、対応するリスナーを置くとうまくいくと思っていました。明らかに、そうではありません。

EditText et = (EditText)findViewById(R.id.entryIdea); 
et.setMovementMethod(new ScrollingMovementMethod()); 

皆さん、お手伝いできますか?

ありがとうございます。 サミー

あなたのXMLで
+2

あなたは以前の質問を通過して、正しい回答として最良の回答をマークする必要があります。 –

+0

EditTextにスクロールさせるのに十分な行があれば、スコアリングする必要があります。リスナーを追加する必要はありません。 多くのテキスト行で入力しようとしましたか? – Juhani

答えて

7

layout_heightではないEditText高さを設定してみてくださいではなく、ところで、SPを使用すると、フォントサイズを除いて何のためにサイズを設定することをお勧めは通常ではありません(android:lines属性を使用します。DP /ディップを使用すると、よりですこの場合は自然)。

は一方wrap_contentlayout_heightを設定します。さもなければ、あなたが提示したXML(私が言及した変更を伴う)は、コード内の移動メソッドを指定しなくても、うまく動作しました。

もちろん、EditTextの実際のテキスト行がアンドロイド:行属性で示されているものより大きい場合、スクロールバーが表示されます。

android:maxLines="5" 

あなたのxmlファイルの属性:

+0

Coleffaeus(素敵なニックネームbtw)が指摘しているように、スクロールバーは属性 'scrollbars'を設定して指定した行数を超えた場合のみ表示されます。 'lines'では、設定していなくても常にスクロールします。 –

3

このlink

EditText dwEdit = (EditText) findViewById(R.id.DwEdit);  
dwEdit.setOnTouchListener(new OnTouchListener() { 

      public boolean onTouch(View view, MotionEvent event) { 
       // TODO Auto-generated method stub 
       if (view.getId() ==R.id.DwEdit) { 
        view.getParent().requestDisallowInterceptTouchEvent(true); 
        switch (event.getAction()&MotionEvent.ACTION_MASK){ 
        case MotionEvent.ACTION_UP: 
         view.getParent().requestDisallowInterceptTouchEvent(false); 
         break; 
        } 
       } 
       return false; 
      } 
     }); 
2

使用これを参照してください。次に、scrollbars属性が機能します。

3
editText1.setOnTouchListener(new OnTouchListener() { 

     public boolean onTouch(View view, MotionEvent event) { 
      // TODO Auto-generated method stub 
      if (view.getId() ==R.id.editText1) { 
       view.getParent().requestDisallowInterceptTouchEvent(true); 
       switch (event.getAction()&MotionEvent.ACTION_MASK){ 
       case MotionEvent.ACTION_UP: 
        view.getParent().requestDisallowInterceptTouchEvent(false); 
        break; 
       } 
      } 
      return false; 
     } 
    }); 
0

XMLファイルの使用:

android:maxLines="5" 
xmlファイルを使用中の
1
editText1.setOnTouchListener(new OnTouchListener() { 

    public boolean onTouch(View view, MotionEvent event) { 
     // TODO Auto-generated method stub 
     if (view.getId() ==R.id.editText1) { 
      view.getParent().requestDisallowInterceptTouchEvent(true); 
      switch (event.getAction()&MotionEvent.ACTION_MASK){ 
      case MotionEvent.ACTION_UP: 
       view.getParent().requestDisallowInterceptTouchEvent(false); 
       break; 
      } 
     } 
     return false; 
    } 
}); 
0

アンドロイド:MAXLINES = "5" アンドロイド:スクロールバー= "縦"

そして、の.javaファイルに追加

edt_text.setMovementMethod(新しいScrollingMovementMethod());

関連する問題