好吧,为了让我们保持一致,我的想法是创建一个记录器
我已经设法使它具有垂直滚动但是如何使它不适合其中的文本TextView
我共享代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:hint="texto" />
<Button
android:id="@+id/send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="enviar"
app:layout_constraintTop_toBottomOf="@id/edit"/>
<TextView
android:id="@+id/test1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:lines="4"
android:scrollbars="vertical|horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
爪哇:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
final TextView textView = (TextView) findViewById(R.id.test1);
Button but=(Button) findViewById(R.id.send);
final EditText edit=(EditText) findViewById(R.id.edit);
textView.setMovementMethod(new ScrollingMovementMethod());
but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text=edit.getText().toString();
textView.append("\n"+text);
}
});
}
}
结果:
这是垂直滚动的工作方式,而不是水平滚动的工作方式
最准确的答案
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/test1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:lines="4"
android:scrollbars="vertical" />
</LinearLayout>
</HorizontalScrollView>
但是:被 wrap_content 文本视图的大小不是最好的,以促进垂直移动
通过使用ScrollingMovementMethod()您可以启用滚动,
但实际上,如果您想要一个水平的 ScrollView 并同时想要一个垂直的 ScrollView,这将是不自然的,因为视图的内容总是旨在显示在包含设备宽度的区域内。
添加水平和垂直滚动的唯一方法是使用 ScrollingMovementMethod()类来启用垂直移动:
并使用HorizontalScrollView来启用垂直滚动。
但是有一点需要考虑,当您通过setText()将文本添加到您的时,它最初没有换行符,所有文本都在一行上,因此只会显示水平滚动视图:
EditText
除了水平滚动视图之外,垂直滚动视图也被激活的秘诀是在by中定义的文本中添加换行符\n
,这样当这个文本添加到时TextView
,垂直滚动视图也会被激活。例子:
这将是布局:
我认为这将是最简单的选择,让 ScrollView 适应,如果我们需要滚动,它会自行实现它们。