小技巧
这次分享的是关于textView行数过多可以上下滚动 其实在某些方面这个功能还是挺实用的。
下面我们来看一下实现到最后的图吧!
看好哦,这可不是多个textView而是一个textView还可以上下滚动的观看。
现在开始上代码,不用担心看不懂代码我会在代码上写上每一行的作用,适合新手观看。
XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:text="按钮一"
android:id="@+id/one_bt"
android:layout_marginTop="25dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:text="按钮二"
android:id="@+id/two_bt"
android:layout_marginTop="25dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:text="按钮三"
android:id="@+id/three_bt"
android:layout_width="wrap_content"
android:layout_marginTop="25dp"
android:layout_height="wrap_content"/>
<Button
android:text="按钮四"
android:id="@+id/four_bt"
android:layout_marginTop="25dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:text="按钮五"
android:id="@+id/five_bt"
android:layout_marginTop="25dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/one"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:fadeScrollbars="false"
android:scrollbarFadeDuration="2000"
android:scrollbarStyle="insideOverlay"
android:layout_marginStart="5dp"
/>
</LinearLayout>
这就是简单的几个按钮加一个文本,关于文本的倒数五行属性都是可以不要的。
public class MainActivity extends AppCompatActivity {
private Button oneBt;
private Button twoBt;
private Button threeBt;
private Button fourBt;
private Button fiveBt;
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
initView();
//设置数据
initData();
}
private void initData() {
oneBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addContent("按钮1", "看那个妇女好漂亮");
}
});
twoBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addContent("按钮2", "看那个妇女没有穿裤子");
}
});
threeBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addContent("按钮3", "看我迷人帅气的外表");
}
});
fourBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addContent("按钮4", "看有一个大佬正在看我写的博客");
}
});
fiveBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addContent("按钮5", "偶买噶!大佬注意到我了~.~");
}
});
}
//最主要的方法在这里 我们可以一起看一下 我会将注释一一写上
private void addContent(final String Tag, final String contentStr) {
mTextView.post(new Runnable() {
@Override
public void run() {
/*在这里给大家将一下为什么用append
setText()设置文本 属性:会清空上一次赋的值
append()设置文本 属性:不会清空上次的值,只会在上次的值后面追加
*/
mTextView.append(Tag + ": \n" + " " + contentStr + "\n");
//获取文本每一行的高度 根据高度进行判断追加 最后一行的高度就是该文本的真实高度
int scrollAmount = mTextView.getLayout().getLineTop(mTextView.getLineCount())
- mTextView.getHeight();
if (scrollAmount > 0) {
mTextView.scrollTo(0, scrollAmount);
} else {
mTextView.scrollTo(0, 0);
}
}
});
}
private void initView() {
mTextView = findViewById(R.id.one);
oneBt = findViewById(R.id.one_bt);
twoBt = findViewById(R.id.two_bt);
threeBt = findViewById(R.id.three_bt);
fourBt = findViewById(R.id.four_bt);
fiveBt = findViewById(R.id.five_bt);
//这个是非常关键的 没有了这一行代码文本就不会进行滚动。
mTextView.setMovementMethod(ScrollingMovementMethod.getInstance());
}
}
今天的小技巧就到这里了,你学到了吗?快去讲学到的东西分享给你的小伙伴吧!
很期待下次与大家相遇哦!