TextView 和 EditText 在 LinearLayout 中被截断
TextView and EditText cut off in LinearLayout
我有一个水平方向的 LinearLayout,我在其中动态添加了一些 TextView 和 EditText。我的问题是当 TextView 很长时,它被切断(按高度)并且 EditText 不可见。
向视图添加填充并没有解决问题。设置LinearLayout minHeight值时,TextView正确显示,但EditText仍然不可见
<LinearLayout
android:id="@+id/content_content"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"></LinearLayout>
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
for (int i = 0; i < cntCount; i++) {
TextView cntView = new TextView(getActivity());
cntView.setLayoutParams(params);
cntView.setText(cnt.get(i));
contentContentView.addView(cntView);
EditText answerView = new EditText(getActivity());
answerView.setLayoutParams(params);
answerView.setId(i);
answerView.setHint("......");
contentContentView.addView(answerView);
}
编辑
我找到了解决方案并创建了一个库。有兴趣的可以下载here
您可以为 EditText 和 TextView 设置 layout_weights,而不是为 layout_width 使用 wrap_content。这将确保始终显示 EditText。
您的 LinearLayout
的方向为 "horizontal" - 它将在当前视图的右侧添加下一个视图。这意味着如果 TextView
包裹(填充父级),则 LinearLayout
中没有任何其他视图的空间将在屏幕上可见(它们将被添加到可见布局的右侧).
如果您尝试将 EditText
与一系列 TextView
放在同一行,则您需要创建自定义 TextView
和布局。这需要对 EditText
的位置和大小进行测量,这与 Android 不符合标准。
这个post可能有帮助:How to overlay EditText on TextView just after the end of text
我有一个水平方向的 LinearLayout,我在其中动态添加了一些 TextView 和 EditText。我的问题是当 TextView 很长时,它被切断(按高度)并且 EditText 不可见。
向视图添加填充并没有解决问题。设置LinearLayout minHeight值时,TextView正确显示,但EditText仍然不可见
<LinearLayout
android:id="@+id/content_content"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"></LinearLayout>
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
for (int i = 0; i < cntCount; i++) {
TextView cntView = new TextView(getActivity());
cntView.setLayoutParams(params);
cntView.setText(cnt.get(i));
contentContentView.addView(cntView);
EditText answerView = new EditText(getActivity());
answerView.setLayoutParams(params);
answerView.setId(i);
answerView.setHint("......");
contentContentView.addView(answerView);
}
编辑
我找到了解决方案并创建了一个库。有兴趣的可以下载here
您可以为 EditText 和 TextView 设置 layout_weights,而不是为 layout_width 使用 wrap_content。这将确保始终显示 EditText。
您的 LinearLayout
的方向为 "horizontal" - 它将在当前视图的右侧添加下一个视图。这意味着如果 TextView
包裹(填充父级),则 LinearLayout
中没有任何其他视图的空间将在屏幕上可见(它们将被添加到可见布局的右侧).
如果您尝试将 EditText
与一系列 TextView
放在同一行,则您需要创建自定义 TextView
和布局。这需要对 EditText
的位置和大小进行测量,这与 Android 不符合标准。
这个post可能有帮助:How to overlay EditText on TextView just after the end of text