【问题标题】:Dynamically set height of an EditText based on the content根据内容动态设置 EditText 的高度
【发布时间】:2017-10-14 06:33:16
【问题描述】:
我有一个编辑文本,我在其中使用 setText 将数据加载到编辑表单上。目前 editText 高度是固定的,如果文本大于 editText 高度,我无法立即看到全文。
有没有一种方法可以根据内容动态设置 EditText 的高度。
提前感谢您的帮助和建议
问候
回复
【问题讨论】:
标签:
android
android-layout
android-edittext
【解决方案1】:
您可以将此代码用于您的 xml 文件:
<EditText
android:id="@+id/edtFirstName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/first_name"
android:padding="5dp"
android:textColor="@color/black"
android:textSize="16sp" />
当您的编辑文本包含时,它会自动适应文本大小。
不要使用android:singleLine="true"或android:minLines="1"和android:maxLines="1"
【解决方案2】:
尝试如下设置编辑文本的高度:
android:layout_height="wrap_content"
【解决方案3】:
设置 android:layout_height wrap_content 是最好的方法。
视图应该只大到足以包含其内容。
使用DisplayMetrics 动态设置EditText的高度。
DisplayMetrics metrics = getResources().getDisplayMetrics();
int DeviceTotalWidth = metrics.widthPixels;
int DeviceTotalHeight = metrics.heightPixels;
如何?
if(length()>n) // n is your String length
editTEXT.getLayoutParams().height=DeviceTotalHeight*10/100;
【解决方案4】:
这可能对你有帮助,
使用 android:layout_height ="wrap_content" 和 android:inputType="textMultiLine" 是最好的方法
<EditText
android:id ="@+id/editText"
android:layout_width ="match_parent"
android:layout_height ="wrap_content"
android:inputType="textMultiLine"
android:hint ="Hint"
android:scrollHorizontally="false" />
我建议你使用 ScrollView 作为 EditText
的父布局
当你有一个更大的text 时,它可以防止你的EditText 从屏幕上截断(在屏幕之外)
【解决方案5】:
试试吧,这个可能有帮助-:
edittext.getLayoutParams().width=50
et= (CustomEditText) findViewById(R.id.et);
ViewGroup.LayoutParams lp = et.getLayoutParams();
lp.width = 100;
lp.height = 100;
et.setLayoutParams(lp);