Muh*_*man 736 android scroll textview
我在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);
Run Code Online (Sandbox Code Playgroud)
Ami*_*war 1629
你不需要ScrollView实际使用.
只需设置
android:scrollbars = "vertical"
Run Code Online (Sandbox Code Playgroud)
TextView布局的xml文件中的属性.
然后使用:
yourTextView.setMovementMethod(new ScrollingMovementMethod());
在你的代码中.
宾果,滚动!
Som*_*ere 304
这就是我纯粹用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>
Run Code Online (Sandbox Code Playgroud)
笔记:
android:fillViewport="true"结合android:layout_weight="1.0"将使textview占用所有可用空间.
定义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());
}
});
}
Run Code Online (Sandbox Code Playgroud)
Edd*_*ieB 119
所有真正必要的是setMovementMethod().这是使用LinearLayout的示例.
<?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>
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
mat*_*soy 45
让你的textview添加这个
TextView textview= (TextView) findViewById(R.id.your_textview_id);
textview.setMovementMethod(new ScrollingMovementMethod());
Run Code Online (Sandbox Code Playgroud)
小智 38
没有必要投入
android:Maxlines="AN_INTEGER"`
Run Code Online (Sandbox Code Playgroud)
您只需添加以下内容即可完成工作:
android:scrollbars = "vertical"
Run Code Online (Sandbox Code Playgroud)
并且,将此代码放在Java类中:
textview.setMovementMethod(new ScrollingMovementMethod());
Run Code Online (Sandbox Code Playgroud)
Val*_*lea 19
我找到的最佳方式:
使用具有以下额外属性的EditText替换TextView:
android:background="@null"
android:editable="false"
android:cursorVisible="false"
Run Code Online (Sandbox Code Playgroud)
不需要在ScrollView中包装.
Mor*_*ori 16
如果你使用Kotlin,则这样: XML
<TextView
android:id="@+id/tvMore"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="3"
android:scrollbars="vertical" />
Run Code Online (Sandbox Code Playgroud)
活动
tvMore.movementMethod = ScrollingMovementMethod()
Run Code Online (Sandbox Code Playgroud)
MBH*_*MBH 15
简单.我就这样做了:
XML方面:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
tools:context="com.mbh.usbcom.MainActivity">
<TextView
android:id="@+id/tv_log"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:text="Log:" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)Java方面:
tv_log = (TextView) findViewById(R.id.tv_log);
tv_log.setMovementMethod(new ScrollingMovementMethod());
Run Code Online (Sandbox Code Playgroud)要让文本视图在文本填充时向下滚动,您必须添加:
android:gravity="bottom"
Run Code Online (Sandbox Code Playgroud)
到TextView xml文件.随着更多文本的进入,它会自动向下滚动.
当然,您需要使用append函数而不是set text添加文本:
tv_log.append("\n" + text);
Run Code Online (Sandbox Code Playgroud)
我用它来记录日志.
我希望这有帮助 ;)
小智 13
这是"如何将ScrollBar应用于TextView",仅使用XML.
首先,您需要在main.xml文件中使用Textview控件并将一些文本写入其中...如下所示:
<TextView
android:id="@+id/TEXT"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/long_text"/>
Run Code Online (Sandbox Code Playgroud)
接下来,将文本视图控件放在scrollview之间以显示此文本的滚动条:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="fill_parent">
<ScrollView
android:id="@+id/ScrollView01"
android:layout_height="150px"
android:layout_width="fill_parent">
<TextView
android:id="@+id/TEXT"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/long_text"/>
</ScrollView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
而已...
Mar*_*mer 11
Someone Somewhere上面的"专业提示"(使Android上的TextView可滚动)效果很好,但是,如果你动态地向ScrollView添加文本并希望仅在用户处于附加状态后自动滚动到底部,该怎么办?ScrollView的底部?(也许是因为如果用户已经向上滚动阅读某些内容,您不希望在追加期间自动重置到底部,这会很烦人.)
无论如何,这里是:
if ((mTextStatus.getMeasuredHeight() - mScrollView.getScrollY()) <=
(mScrollView.getHeight() + mTextStatus.getLineHeight())) {
scrollToBottom();
}
Run Code Online (Sandbox Code Playgroud)
如果用户位于ScrollView末尾的一行内,则mTextStatus.getLineHeight()将使它不会scrollToBottom().
IT-*_*Dan 10
这将提供带滚动条的平滑滚动文本.
ScrollView scroller = new ScrollView(this);
TextView tv = new TextView(this);
tv.setText(R.string.my_text);
scroller.addView(tv);
Run Code Online (Sandbox Code Playgroud)
如果要在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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您必须以这种方式在XML中使用它:
<com.yourpackagename.AutoScrollableTextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is very very long text to be scrolled"
/>
Run Code Online (Sandbox Code Playgroud)
而已.
在 kotlin 中使 textview 可滚动
myTextView.movementMethod= ScrollingMovementMethod()
Run Code Online (Sandbox Code Playgroud)
并在xml中添加此属性
android:scrollbars = "vertical"
Run Code Online (Sandbox Code Playgroud)
小智 7
在XML中的textview中添加以下内容.
android:scrollbars="vertical"
Run Code Online (Sandbox Code Playgroud)
最后,添加
textView.setMovementMethod(new ScrollingMovementMethod());
Run Code Online (Sandbox Code Playgroud)
在Java文件中.
小智 7
yourtextView.setMovementMethod(new ScrollingMovementMethod());
Run Code Online (Sandbox Code Playgroud)
您现在可以滚动它。
我没有找到TextView滚动来支持'fling'手势,它在向上或向下滑动后继续滚动.我最终实现了这一点,因为我不想出于各种原因使用ScrollView,并且似乎没有一个MovementMethod允许我选择文本并点击链接.
完成可滚动后,当您在视图中输入任何内容时,将此行添加到视图的最后一行:
((ScrollView) findViewById(R.id.TableScroller)).fullScroll(View.FOCUS_DOWN);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
545388 次 |
| 最近记录: |