TextViewをAndroidでスクロール可能にする
14985 ワード
私がtextviewに表示したテキストは長すぎて、1つの画面に収容できません.TextViewをスクロールできるようにする必要があります.どうすればいいの?
これはコードです.
1階
これはXMLのみを使用した「ScrollBarをTextViewに適用する方法」です.
まずmainでxmlファイルにTextviewコントロールを使用し、テキストをいくつか書き込みます.
次に、テキストビューコントロールをスクロールビューの間に配置して、テキストのスクロールバーを表示します.
ただ...
2階
スクロール可能な操作が完了したら、ビューに任意の内容を入力します.この行をビューの最後の行に追加します.
#3階
EditTextソリューションを使用したくない場合は、次の方法がより良い場合があります.
#4階
これにより、スクロールバー付きのスムーズなスクロールテキストが提供されます.
#5階
テキストをtextviewでスクロールする場合は、次の操作を行います.
まずtextviewを継承する必要があります.
そしてそれを使います.
以下に、サブクラス化textviewの例を示します.
XMLでこの方法で使用する必要があります.
ただです.
#6階
上の「誰かのどこか」(TextViewをAndroidでスクロール可能にする)の「プロフェッショナルヒント」は効果的ですが、ScrollViewにテキストを動的に追加し、ユーザーがいる場合にのみ追加後に自動的に最後までスクロールしたい場合はどうすればいいですか?ScrollViewの下部?(ユーザーがスクロールしてコンテンツを読む場合、追加中に自動的に最後までリセットしたくないため、煩わしいためかもしれません.)
いずれにしても、ここは:
mTextStatusを使用します.getLineHeight()は、ユーザーがScrollViewの末尾の行にいる場合は、ToBottom()にスクロールしないようにすることができます.
#7階
textviewにこれだけ追加する
#8階
君はできるは Movementメソッドを
#9階
XMLレイアウトに追加:
コードでは、次の行を記述する必要があります.
#10階
XMLのテキストビューに次の内容を追加します.
最後に、追加
Javaファイルにあります.
#11階
私はそのために1週間以上奮闘して、やっとそれをどのように仕事をさせる方法を考え出しました!
私の問題は、すべてのコンテンツが「ブロック」にスクロールされることです.テキスト自体はスクロール中ですが、行単位ではなくスクロール表示されます.これは明らかに私には役に立たない.底の線を切るからだ.以前のすべてのソリューションは私に適用されなかったので、自分で自分のソリューションを作りました.
これまでで最も簡単な解決策です.
パッケージ内に「PerfectScrollableTextView」というクラスファイルを作成し、このコードをコピーして貼り付けます.
最後に、XMLで「TextView」を変更します.
由来:
実際には
設定するだけ
レイアウトされたxmlファイルの
次に、次の操作を行います.
コードにあります.
ビンゴゲーム、スクロール!
#13階
簡単です.これは私の方法です. XML面: Java側: ボーナス:
テキストの入力時にテキストビューを下にスクロールするには、次の項目を追加する必要があります.
TextView xmlファイルに移動します.より多くのテキストが入力されると、自動的に下にスクロールされます.
もちろん、設定テキストではなくappend関数を使用してテキストを追加する必要があります.
ログの目的で使用します.
これが役に立つことを願っています.
#14階
入れる必要はない
次の内容を追加するだけで作業が完了します.
次に、Javaクラスに次のコードを入れます.
#15階
次のコードは、自動水平スクロールtextviewを作成します.
xtViewをxmlに追加するときに使用
onCreate()でTextViewの次のプロパティを設定します.
#16階
このように使う
#17階
私にとって、コンストレイントレイアウト、AS 2.3.
コード実装:
XML:
#18階
そしてJavaコードで.
#19階
#20階
親としてScrollViewを使用する必要があるたびに、スクロール移動方法をTextViewとともに使用することもできます.
デバイスを縦に横に配置すると、いくつかの問題が発生します.たとえば、ページ全体がスクロール可能ですが、スクロール移動方法は無効です.
親またはスクロール移動メソッドとしてScrollViewを使用する必要がある場合は、次のdescも使用できます.
問題がない場合は、TextViewの代わりにEditTextを使用します.
以下を参照:
ここで、EditTextの動作はTextViewに似ています.
お客様の問題は解決されます.
#21階
XML-
テキストがビューよりも広いことを許可するかどうか(水平にスクロールできます).
「true」や「false」などのブール値が使用できます.
Prigramacaly-
#22階
これを試します.
#23階
Kotlinではtextviewをスクロール可能にする
xmlにこのプロパティを追加
#24階
本当に必要なのはsetMovementMethod()です.LinearLayoutを使用した例です.
ファイルmain.xml
ファイルjava
#25階
「反転」ジェスチャーをサポートするTextViewスクロールは見つかりませんでした.このジェスチャーは、上または下にスライドした後もスクロールし続けます.私は最終的に自分でそれを実現しました.いろいろな理由でScrolViewを使用したくないし、MovementMethodがテキストを選択してリンクをクリックすることを許可していないようです.
#26階
これが私が純粋にXMLでやった方法です.
メモ: Scrollviewを定義する場合は、
専門家のヒント:
テキストを追加した後、プログラムで最後までスクロールするには、次のコマンドを使用します.
#27階
私が見つけた最善の方法は:
次のような追加属性を持つEditTextを使用してTextViewを置き換えます.
ScrollViewにパッケージする必要はありません.
これはコードです.
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);
1階
これはXMLのみを使用した「ScrollBarをTextViewに適用する方法」です.
まずmainでxmlファイルにTextviewコントロールを使用し、テキストをいくつか書き込みます.
次に、テキストビューコントロールをスクロールビューの間に配置して、テキストのスクロールバーを表示します.
ただ...
2階
スクロール可能な操作が完了したら、ビューに任意の内容を入力します.この行をビューの最後の行に追加します.
((ScrollView) findViewById(R.id.TableScroller)).fullScroll(View.FOCUS_DOWN);
#3階
EditTextソリューションを使用したくない場合は、次の方法がより良い場合があります.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourLayout);
(TextView)findViewById(R.id.yourTextViewId).setMovementMethod(ArrowKeyMovementMethod.getInstance());
}
#4階
これにより、スクロールバー付きのスムーズなスクロールテキストが提供されます.
ScrollView scroller = new ScrollView(this);
TextView tv = new TextView(this);
tv.setText(R.string.my_text);
scroller.addView(tv);
#5階
テキストをtextviewでスクロールする場合は、次の操作を行います.
まずtextviewを継承する必要があります.
そしてそれを使います.
以下に、サブクラス化textviewの例を示します.
public class AutoScrollableTextView extends TextView {
public AutoScrollableTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setEllipsize(TruncateAt.MARQUEE);
setMarqueeRepeatLimit(-1);
setSingleLine();
setHorizontallyScrolling(true);
}
public AutoScrollableTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setEllipsize(TruncateAt.MARQUEE);
setMarqueeRepeatLimit(-1);
setSingleLine();
setHorizontallyScrolling(true);
}
public AutoScrollableTextView(Context context) {
super(context);
setEllipsize(TruncateAt.MARQUEE);
setMarqueeRepeatLimit(-1);
setSingleLine();
setHorizontallyScrolling(true);
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
if(focused)
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
@Override
public void onWindowFocusChanged(boolean focused) {
if(focused)
super.onWindowFocusChanged(focused);
}
@Override
public boolean isFocused() {
return true;
}
}
XMLでこの方法で使用する必要があります.
ただです.
#6階
上の「誰かのどこか」(TextViewをAndroidでスクロール可能にする)の「プロフェッショナルヒント」は効果的ですが、ScrollViewにテキストを動的に追加し、ユーザーがいる場合にのみ追加後に自動的に最後までスクロールしたい場合はどうすればいいですか?ScrollViewの下部?(ユーザーがスクロールしてコンテンツを読む場合、追加中に自動的に最後までリセットしたくないため、煩わしいためかもしれません.)
いずれにしても、ここは:
if ((mTextStatus.getMeasuredHeight() - mScrollView.getScrollY()) <=
(mScrollView.getHeight() + mTextStatus.getLineHeight())) {
scrollToBottom();
}
mTextStatusを使用します.getLineHeight()は、ユーザーがScrollViewの末尾の行にいる場合は、ToBottom()にスクロールしないようにすることができます.
#7階
textviewにこれだけ追加する
TextView textview= (TextView) findViewById(R.id.your_textview_id);
textview.setMovementMethod(new ScrollingMovementMethod());
#8階
君はできる
ScrollView
でTextView
を包囲する.またはScrollingMovementMethod.getInstance();
に設定します.#9階
XMLレイアウトに追加:
android:ellipsize="marquee"
android:focusable="false"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="To Make An textView Scrollable Inside The TextView Using Marquee"
コードでは、次の行を記述する必要があります.
textview.setSelected(true);
textView.setMovementMethod(new ScrollingMovementMethod());
#10階
XMLのテキストビューに次の内容を追加します.
android:scrollbars="vertical"
最後に、追加
textView.setMovementMethod(new ScrollingMovementMethod());
Javaファイルにあります.
#11階
私はそのために1週間以上奮闘して、やっとそれをどのように仕事をさせる方法を考え出しました!
私の問題は、すべてのコンテンツが「ブロック」にスクロールされることです.テキスト自体はスクロール中ですが、行単位ではなくスクロール表示されます.これは明らかに私には役に立たない.底の線を切るからだ.以前のすべてのソリューションは私に適用されなかったので、自分で自分のソリューションを作りました.
これまでで最も簡単な解決策です.
パッケージ内に「PerfectScrollableTextView」というクラスファイルを作成し、このコードをコピーして貼り付けます.
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView;
public class PerfectScrollableTextView extends TextView {
public PerfectScrollableTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setVerticalScrollBarEnabled(true);
setHorizontallyScrolling(false);
}
public PerfectScrollableTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setVerticalScrollBarEnabled(true);
setHorizontallyScrolling(false);
}
public PerfectScrollableTextView(Context context) {
super(context);
setVerticalScrollBarEnabled(true);
setHorizontallyScrolling(false);
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
if(focused)
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
@Override
public void onWindowFocusChanged(boolean focused) {
if(focused)
super.onWindowFocusChanged(focused);
}
@Override
public boolean isFocused() {
return true;
}
}
最後に、XMLで「TextView」を変更します.
由来:
到着:
#12階実際には
ScrollView
を使用する必要はありません.設定するだけ
android:scrollbars = "vertical"
レイアウトされたxmlファイルの
TextView
プロパティ.次に、次の操作を行います.
yourTextView.setMovementMethod(new ScrollingMovementMethod());
コードにあります.
ビンゴゲーム、スクロール!
#13階
簡単です.これは私の方法です.
tv_log = (TextView) findViewById(R.id.tv_log); tv_log.setMovementMethod(new ScrollingMovementMethod());
テキストの入力時にテキストビューを下にスクロールするには、次の項目を追加する必要があります.
android:gravity="bottom"
TextView xmlファイルに移動します.より多くのテキストが入力されると、自動的に下にスクロールされます.
もちろん、設定テキストではなくappend関数を使用してテキストを追加する必要があります.
tv_log.append("
" + text);
ログの目的で使用します.
これが役に立つことを願っています.
#14階
入れる必要はない
android:Maxlines="AN_INTEGER"`
次の内容を追加するだけで作業が完了します.
android:scrollbars = "vertical"
次に、Javaクラスに次のコードを入れます.
textview.setMovementMethod(new ScrollingMovementMethod());
#15階
次のコードは、自動水平スクロールtextviewを作成します.
xtViewをxmlに追加するときに使用
onCreate()でTextViewの次のプロパティを設定します.
tv.setSelected(true);
tv.setHorizontallyScrolling(true);
#16階
このように使う
#17階
私にとって、コンストレイントレイアウト、AS 2.3.
コード実装:
YOUR_TEXTVIEW.setMovementMethod(new ScrollingMovementMethod());
XML:
android:scrollbars="vertical"
android:scrollIndicators="right|end"
#18階
maxLines
およびscrollbars
をxmlのTextViewに配置する.
そしてJavaコードで.
textView.setMovementMethod(new ScrollingMovementMethod());
#19階
ScrollView
でTextView
を使用したときにこの問題に遭遇しました.この解決策は私に役に立つ.scrollView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
description.getParent().requestDisallowInterceptTouchEvent(false);
return false;
}
});
description.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
description.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});
#20階
親としてScrollViewを使用する必要があるたびに、スクロール移動方法をTextViewとともに使用することもできます.
デバイスを縦に横に配置すると、いくつかの問題が発生します.たとえば、ページ全体がスクロール可能ですが、スクロール移動方法は無効です.
親またはスクロール移動メソッドとしてScrollViewを使用する必要がある場合は、次のdescも使用できます.
問題がない場合は、TextViewの代わりにEditTextを使用します.
以下を参照:
ここで、EditTextの動作はTextViewに似ています.
お客様の問題は解決されます.
#21階
XML-
android:scrollHorizontally
プロパティを使用できますテキストがビューよりも広いことを許可するかどうか(水平にスクロールできます).
「true」や「false」などのブール値が使用できます.
Prigramacaly-
setHorizontallyScrolling(boolean)
#22階
これを試します.
android:scrollbars = "vertical"
#23階
Kotlinではtextviewをスクロール可能にする
myTextView.movementMethod= ScrollingMovementMethod()
xmlにこのプロパティを追加
android:scrollbars = "vertical"
#24階
本当に必要なのはsetMovementMethod()です.LinearLayoutを使用した例です.
ファイルmain.xml
ファイル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) + "
";
}
tv1.setMovementMethod(new ScrollingMovementMethod());
tv1.setText(s);
}
}
#25階
「反転」ジェスチャーをサポートするTextViewスクロールは見つかりませんでした.このジェスチャーは、上または下にスライドした後もスクロールし続けます.私は最終的に自分でそれを実現しました.いろいろな理由でScrolViewを使用したくないし、MovementMethodがテキストを選択してリンクをクリックすることを許可していないようです.
#26階
これが私が純粋にXMLでやった方法です.
メモ:
android:fillViewport="true"
とandroid:layout_weight="1.0"
android:fillViewport="true"
を組み合わせて使用すると、textviewはすべての利用可能なスペースを占有します.android:layout_height="fill_parent"
を指定しないでください.そうしないとscrollviewは無効です.(これでさっき1時間も無駄にしました!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());
}
});
}
#27階
私が見つけた最善の方法は:
次のような追加属性を持つEditTextを使用してTextViewを置き換えます.
android:background="@null"
android:editable="false"
android:cursorVisible="false"
ScrollViewにパッケージする必要はありません.