Android Spinner 自定义背景跨版本行为

Android Spinner Custom Background Cross Version Behaviour

我正在尝试在 android 微调器上实现自定义背景,我已经成功完成了。但是,在测试此交叉版本时会出现奇怪的行为。左笔画和右笔画都消失并出现"cut off",半径也不存在。

截图:

4.4.2(即意)

4.4.4 (即实际)

我希望两者都显示为 4.4.2。帮忙?

代码:

login.xml

        <Spinner
            android:id="@+id/login_domains"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:background="@drawable/bootstrap_group_edittext_top"
            android:paddingTop="12dp"
            android:paddingBottom="12dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:layout_marginTop="25dp"
            />

        <EditText
            android:id="@+id/login_username"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/bootstrap_group_edittext_middle"
            android:hint="@string/placeholder_username"
            android:paddingTop="12dp"
            android:paddingBottom="12dp"
            android:paddingLeft="18dp"
            android:paddingRight="18dp"
            android:maxWidth="300dp"
            android:minWidth="300dp"
            />

        <EditText
            android:id="@+id/login_password"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/bootstrap_group_edittext_bottom"
            android:hint="@string/placeholder_password"
            android:paddingTop="12dp"
            android:paddingBottom="12dp"
            android:paddingLeft="18dp"
            android:paddingRight="18dp"
            android:layout_marginBottom="10dp"
            android:inputType="textPassword"
            android:maxWidth="300dp"
            android:minWidth="300dp"
            />

        <Button
            android:id="@+id/login_action_button"
            android:background="@drawable/ee_yellow_button"
            android:text="@string/splash_login_btn_login"
            android:textColor="#000000"
            android:textStyle="normal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="15dp"
            android:maxWidth="300dp"
            android:minWidth="300dp" />

bootstrap_group_edittext_top.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <stroke android:width="1dp"
        android:color="#CCCCCC" />

    <corners
        android:bottomLeftRadius="0dp"
        android:bottomRightRadius="0dp"
        android:topLeftRadius="4dp"
        android:topRightRadius="4dp"/>

    <gradient
        android:type="linear"
        android:angle="-90"
        android:centerColor="#FFFFFFFF"
        android:startColor="#dddddd"
        android:endColor="#FFFFFF"
        android:centerY="2%"/>
</shape>

在一位同事的帮助下,我设法找到了原因。因为我为 Spinner 使用了固定宽度,所以背景的边界受到了限制。我在尝试实现 "maxWidth" 定义时使用它。

我通过创建一个类似于 this answer 的容器并将子元素更改为具有 match_parentandroid:layout_width 并在左侧添加 10dp 的边距来解决此问题并赋予每个人以防止剪裁的权利。

完整代码(为了安全我删除了包):

        <com.yourpackage.views.BoundedLinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:minWidth="300dp"
            app_name:bounded_width="300dp">

            <TextView
                android:id="@+id/login_error_msg"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:background="@drawable/bootstrap_alert_error"
                android:visibility="gone"
                android:textColor="#a94442"
                android:layout_marginRight="10dp"
                android:layout_marginLeft="10dp"
                />

            <Spinner
                android:id="@+id/login_domains"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bootstrap_group_edittext_top"
                android:paddingTop="12dp"
                android:paddingBottom="12dp"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:layout_marginTop="25dp"
                android:layout_marginRight="10dp"
                android:layout_marginLeft="10dp"
                />

            <EditText
                android:id="@+id/login_username"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bootstrap_group_edittext_middle"
                android:hint="@string/placeholder_username"
                android:paddingTop="12dp"
                android:paddingBottom="12dp"
                android:paddingLeft="18dp"
                android:paddingRight="18dp"
                android:layout_marginRight="10dp"
                android:layout_marginLeft="10dp"
                />

            <EditText
                android:id="@+id/login_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bootstrap_group_edittext_bottom"
                android:hint="@string/placeholder_password"
                android:paddingTop="12dp"
                android:paddingBottom="12dp"
                android:paddingLeft="18dp"
                android:paddingRight="18dp"
                android:layout_marginRight="10dp"
                android:layout_marginLeft="10dp"
                android:layout_marginBottom="10dp"
                android:inputType="textPassword"
                />

            <Button
                android:id="@+id/login_action_button"
                android:background="@drawable/ee_yellow_button"
                android:text="@string/splash_login_btn_login"
                android:textColor="#000000"
                android:textStyle="normal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dp"
                android:layout_marginRight="10dp"
                android:layout_marginLeft="10dp" />

            <TextView
                android:id="@+id/login_need_access"
                android:gravity="center"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/mee_login_need_access"
                android:layout_marginTop="25dp"
                android:textColor="#FFFFFFFF"
                />
        </com.yourpackage.views.BoundedLinearLayout>