Android에서 TextView를 스크롤 가능하게 만들기 길어서 한

너무 길어서 한 화면에 맞지 않는 텍스트보기에 텍스트를 표시하고 있습니다. TextView를 스크롤 가능하게 만들어야합니다. 어떻게해야합니까?

코드는 다음과 같습니다.

final TextView tv = new TextView(this);
tv.setBackgroundResource(R.drawable.splash);
tv.setTypeface(face);
tv.setTextSize(18);
tv.setTextColor(R.color.BROWN);
tv.setGravity(Gravity.CENTER_VERTICAL| Gravity.CENTER_HORIZONTAL);
tv.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent e) {
        Random r = new Random();
        int i = r.nextInt(101);
        if (e.getAction() == e.ACTION_DOWN) {
            tv.setText(tips[i]);
            tv.setBackgroundResource(R.drawable.inner);
        }
        return true;
    }
});
setContentView(tv);



답변

ScrollView실제로 사용할 필요는 없습니다 .

그냥 설정

android:scrollbars = "vertical"

TextView레이아웃의 xml 파일에서 속성 .

그런 다음 사용하십시오.

yourTextView.setMovementMethod(new ScrollingMovementMethod());

귀하의 코드에서.

빙고, 스크롤!


답변

이것이 내가 순수하게 XML로 한 방법입니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <ScrollView
        android:id="@+id/SCROLLER_ID"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:fillViewport="true">

        <TextView
            android:id="@+id/TEXT_STATUS_ID"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1.0"/>
    </ScrollView>
</LinearLayout>

노트:

  1. android:fillViewport="true"와 결합 android:layout_weight="1.0"하면 텍스트 뷰가 사용 가능한 모든 공간을 차지합니다.

  2. Scrollview를 정의 할 때 android:layout_height="fill_parent"달리 지정 하지 마십시오 . scrollview가 작동하지 않습니다! (이로 인해 지금 당장 한 시간을 낭비하게되었습니다! FFS).

프로 팁 :

텍스트를 추가 한 후 프로그래밍 방식으로 아래쪽으로 스크롤하려면 다음을 사용하십시오.

mTextStatus = (TextView) findViewById(R.id.TEXT_STATUS_ID);
mScrollView = (ScrollView) findViewById(R.id.SCROLLER_ID);

private void scrollToBottom()
{
    mScrollView.post(new Runnable()
    {
        public void run()
        {
            mScrollView.smoothScrollTo(0, mTextStatus.getBottom());
        }
    });
}


답변

실제로 필요한 것은 setMovementMethod ()입니다. 다음은 LinearLayout을 사용하는 예입니다.

main.xml 파일

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:id="@+id/tv1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="@string/hello"
    />
</LinearLayout>

WordExtractTest.java 파일

public class WordExtractTest extends Activity {

    TextView tv1;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tv1 = (TextView)findViewById(R.id.tv1);

        loadDoc();
    }

    private void loadDoc() {

        String s = "";

        for(int x=0; x<=100; x++) {
            s += "Line: " + String.valueOf(x) + "\n";
        }

        tv1.setMovementMethod(new ScrollingMovementMethod());

        tv1.setText(s);
    }
}


답변

이것을 추가하여 텍스트보기를 만드십시오.

TextView textview= (TextView) findViewById(R.id.your_textview_id);
textview.setMovementMethod(new ScrollingMovementMethod());


답변

넣을 필요는 없습니다

android:Maxlines="AN_INTEGER"`

간단히 다음을 추가하여 작업을 수행 할 수 있습니다.

android:scrollbars = "vertical"

그리고이 코드를 Java 클래스에 넣으십시오.

textview.setMovementMethod(new ScrollingMovementMethod());


답변

당신은 할 수 있습니다

  1. TextView의해 둘러싸여 ScrollView; 또는
  2. 이동 방법을로 설정하십시오 ScrollingMovementMethod.getInstance();.

답변

내가 찾은 가장 좋은 방법 :

TextView를 다음 추가 속성이있는 EditText로 바꾸십시오.

android:background="@null"
android:editable="false"
android:cursorVisible="false"

ScrollView를 래핑 할 필요가 없습니다.