java - 错误的行数EditText
问题描述
我正在尝试创建一个简单的系统,用于通过 TextView 布局显示编辑文本中的行数。不幸的是,当我显示布局时,行数是根据编辑文本的旧尺寸而不是新尺寸计算的,这会导致行数错误。
我的 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:background="@android:color/white"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView"
android:layout_width="50dp"
android:layout_height="match_parent"
android:background="@color/grey100"
android:textSize="18sp"
android:visibility="gone"
android:textColor="@color/black"/>
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:textSize="18sp"
android:layout_toEndOf="@id/textView"
android:gravity="start|top"
android:inputType="textMultiLine" />
</RelativeLayout>
</ScrollView>
</RelativeLayout>
我的主要活动:
public class MainActivity extends AppCompatActivity {
private EditText editText;
private TextView textView;
private int lineNumber;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
editText = findViewById(R.id.editText);
editText.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.");
showLine();
}
private void showLine() {
editText.post(new Runnable() {
@Override
public void run() {
textView.setVisibility(View.VISIBLE);
editText.invalidate();
editText.requestLayout();
lineNumber = editText.getLineCount();
StringBuilder text = new StringBuilder();
for (int i = 0; i < lineNumber; i ++)
text.append(i+1).append("\n");
textView.setText(text.toString());
}
});
}
}
解决方案
推荐阅读
- attributes - 向 hdf5 文件添加属性
- amazon-web-services - 如何在 Windows 和 Apache 上的 AWS 上托管两个网站,但只有一个网站有效
- python - 通过多个博客标签索引或过滤 Wagtail 博客文章
- parse-platform - Parse Cloud 函数从 Parse Server 2.8.4 升级到 3.0+ 后返回空对象
- docker - 如果容器已经存在,则需要 pod
- r - 如何使用 DAAG 包在 R 中执行重复的 k 折交叉验证?
- linux - sd_journal_print 未正确记录
- apache - Apache 拒绝连接
- javascript - 为什么选择选项没有显示数字?
- blazor-server-side - 未找到 Blazor 路线 - 如何前往站点基地?