You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android中为动态创建的EditText实现浮动标签?

解决方案

从你的代码和效果对比来看,当前EditText占满了父布局的高度,文字紧贴边界;而你期望的是EditText高度自适应文本内容,带有默认边框且文字与边框有间距。具体修改如下:

1. 修改布局参数,让高度自适应内容

当前代码里设置了LinearLayout.LayoutParams.MATCH_PARENT作为高度,这会让EditText占满父布局的高度。把高度改为WRAP_CONTENT,这样EditText会根据文本内容自动调整高度:

myEditText.setLayoutParams(new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT, 
    LinearLayout.LayoutParams.WRAP_CONTENT // 替换为自适应高度
));

2. 添加内边距,让文字与边框保持间距

目标效果里文字和边框有明显间距,你可以通过设置内边距实现:

// 用dp转换后的像素值适配不同屏幕,也可直接写固定px值(如16)
int padding = getResources().getDimensionPixelSize(R.dimen.edit_text_padding);
myEditText.setPadding(padding, padding, padding, padding);

如果没有定义dimen资源,可在res/values/dimens.xml中添加:

<dimen name="edit_text_padding">16dp</dimen>

3. 恢复默认EditText背景样式(可选)

如果你的EditText当前没有显示默认边框,可手动设置系统默认背景:

myEditText.setBackgroundResource(android.R.drawable.edit_text);

修改后的完整代码

EditText myEditText = new EditText(MainActivity.this);

// 调整布局参数
myEditText.setLayoutParams(new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT, 
    LinearLayout.LayoutParams.WRAP_CONTENT
));

myEditText.setTypeface(Typeface.create("sans-serif-smallcaps", Typeface.NORMAL));
myEditText.setText(arr.get(0).get(0));

// 设置内边距
int padding = getResources().getDimensionPixelSize(R.dimen.edit_text_padding);
myEditText.setPadding(padding, padding, padding, padding);

// 设置默认背景(按需添加)
myEditText.setBackgroundResource(android.R.drawable.edit_text);

parent.addView(myEditText);

内容的提问来源于stack exchange,提问作者user21917572

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 08:55:18