Android setBackgroundResource在api 16-19中表现不同

时间:2016-02-11 10:53:25

标签: android xml background android-edittext

我正在使用setBackgroundResource(R.drawable.myXmlFile),当我在api 21及以上版本中运行应用程序时一切正常但是当我在api 16-19中运行应用程序时,它显示了不同的smth。 在我的焦点上的editText中,我正在尝试更改下划线颜色,对于下划线,我使用了自定义xml文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:bottom="1dp"
    android:left="-3dp"
    android:right="-3dp"
    android:top="-3dp">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:thickness="0dp"
    android:shape="rectangle">
    <stroke android:width="1.2dp"
        android:color="#c6c6c6"/>
    <solid android:color="@color/transparent" />
</shape>
</item>

这是正常的底线所以不关注editText它看起来好像在图片中:

enter image description here

但是在editText获得焦点后,我有另一个相同的xml,但是使用白色底线颜色,并且在setOnFocusChangeListener()方法中我使用:

this.email.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus)
    {
        if (getActivity().findViewById(R.id.error_email) == null)
        {
            if (hasFocus)
            {
                  email.setBackgroundResource(R.drawable.border_bottom_highlighted);
            }
            else
            {
                email.setBackgroundResource(R.drawable.border_bottom);
            }
        }
    }
});

我得到了这个结果:

enter image description here

两个州之间的比较:

enter image description here

和xml中的editText:

<EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@id/email_input"
        android:hint="Email-i juaj"
        android:textColorHint="@color/fontColor"
        android:textSize="@dimen/font_size"
        android:textColor="@color/fontColor"
        android:paddingTop="@dimen/vertical_padding"
        android:paddingBottom="@dimen/input_bottom_padding"
        android:background="@drawable/border_bottom"
        android:singleLine="true"
        android:layout_marginTop="@dimen/logo_login_bottom_margin"
        android:inputType="textEmailAddress"
        android:imeOptions="actionDone"/>

任何人都可以帮我解决这个问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

 int version = Build.VERSION.SDK_INT;

尝试获取api版本并设置if循环

  if (version >= 16 && version <= 19) {
    setContentView(R.layout.main);
    }
   else
   {
   setContentView(R.layout.main);
   }