在API 21中没有使用EditText填充。我尝试在空项目中进行,只使用单个editText,但它仍然无法正常工作。
以编程方式设置填充有效,但在我的工作项目中,我有很多具有不同填充的EditTexts,并且以编程方式设置填充是不正确的。
在API级别19 xml填充效果很好。
有没有解决方案?
这是我的EditText xml代码:
<EditText
android:id="@+id/et_text"
android:text="Text"
android:paddingLeft="20dp"
android:paddingStart="20dp"
android:paddingRight="20dp"
android:paddingEnd="20dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_width="match_parent"
android:layout_height="45dp"/>
结果中,我得到了:
我期待:
答案 0 :(得分:8)
这是android bug。将来它将得到修复。
答案 1 :(得分:4)
通过使用填充创建自定义edittext并在xml中使用它来解决它。
public class MyEditTextView extends EditText{
public MyEditTextView(Context context) {
super(context);
init();
}
public MyEditTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyEditTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init(){
int paddingLeftRight = (int) getResources().getDimension(R.dimen.edittext_padding);
int topPadding = this.getPaddingTop();
int bottomPadding = this.getPaddingBottom();
setPadding(paddingLeftRight, topPadding, paddingLeftRight, bottomPadding);
}
}
答案 2 :(得分:1)
尝试使用方法setLayoutParams()以编程方式提供填充它将起作用我很有希望 参考:Example
答案 3 :(得分:1)
只需将android:paddingLeft
替换为android:paddingStart
,无论如何应该修复这些设备上的错误。
答案 4 :(得分:0)
不是解决问题的最佳方法,但它适用于我:您可以将 android:layout_height 属性设置为某个固定值并设置 android:gravity 到中心或 center_vertical
<EditText
...
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
.../>
答案 5 :(得分:-1)
使用android standart edittext解决它的样式:
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:editTextStyle">@android:style/Widget.EditText</item>
</style>