【问题标题】:Doesn't work EditText padding in the API 21API 21 中的 EditText 填充不起作用
【发布时间】:2017-08-23 23:37:43
【问题描述】:

在 API 21 中的 EditText 填充不起作用。我尝试在空项目中执行此操作,仅使用单个 editText,但它仍然不起作用。

以编程方式设置填充是有效的,但在我的工作项目中,我有很多具有不同填充的 EditText,并且以编程方式设置填充不是正确的方式。

在 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"/>

在结果中,我得到了:

我希望:

【问题讨论】:

  • 这里有同样的问题。更新到 API 21 后,我的编辑文本不会应用填充。

标签: android padding


【解决方案1】:

这是安卓错误。以后会修复的。

Bug report on google code.

【讨论】:

  • bug 已于 12 月 18 日关闭,希望它会在下一个版本中发布... 什么?
  • 这看起来不会被修复,因为使用 android:paddingStart 是解决方法
【解决方案2】:

通过创建带有填充的自定义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);
}

}

【讨论】:

    【解决方案3】:

    只需将android:paddingLeft 替换为android:paddingStart,无论如何都应该如此,并修复这些设备上的此错误。

    【讨论】:

      【解决方案4】:

      尝试使用 setLayoutParams() 方法以编程方式提供填充,我希望它会起作用 参考:Example

      【讨论】:

      • 在我的项目中,我使用了大量具有不同填充的编辑文本并以编程方式设置填充 - 这不是解决此任务的正确方法。
      • 确认以编程方式设置填充有效,但我同意 @user3134124 的观点,认为这非常烦人。
      【解决方案5】:

      不是解决问题的最佳方法,但它对我有用:您可以将 android:layout_height 属性设置为某个固定值并设置 android:gravitycentercenter_vertical

      <EditText
              ...
              android:layout_width="match_parent"
              android:layout_height="50dp"
              android:gravity="center"
              .../>
      

      【讨论】:

        【解决方案6】:

        在样式中解决它,使用 android 标准编辑文本:

        <style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
            <item name="android:editTextStyle">@android:style/Widget.EditText</item>
        </style>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-10-21
          • 1970-01-01
          • 1970-01-01
          • 2018-01-19
          • 1970-01-01
          • 2013-12-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多