如何在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
相关产品推荐
相关产品推荐

