将背景图像添加到 RelativeLayout 隐藏所有其他元素
Adding a background image to RelativeLayout hide all others elements
我有一个简单的XML:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".LoginActivity"
android:background="@drawable/login_background">
<LinearLayout
android:orientation="vertical"
android:layout_width="320dp"
android:layout_height="160dp"
android:layout_alignParentBottom="true"
android:layout_marginStart="218dp"
android:layout_marginBottom="25dp">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/editText"
android:textColor="@color/surtimax_gris_texto"
android:layout_gravity="center_horizontal"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textStyle="bold"
android:hint="@string/login_edittext_user_text"
android:textColorHint="@color/surtimax_gris_texto" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/editText2"
android:background="@drawable/login_edittext_background"
android:textColor="@color/surtimax_gris_texto"
android:layout_gravity="center_horizontal"
android:layout_marginTop="15dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textStyle="bold"
android:hint="@string/login_edittext_pass_text"
android:textColorHint="@color/surtimax_gris_texto" />
</LinearLayout>
</RelativeLayout>
问题是:当 RelativeLayout 有背景时在模拟器或真实设备中都没有显示 LinearLayout 和 EditText。
如果我只是删除背景一切正常......这很奇怪。
不是关于应用程序的错误日志。
minSdkVersion 17
targetSdkVersion 22
已更新
它使用正常背景图像(非 9patch)。所以问题是关于背景9patch图像。
已更新 2
在 SO 中有很多关于在后台使用 9patch 的 questions/answers,但是因为我面临的问题是应用背景,所以我开始在 google 中寻找 "background image problems"。当然 google 中的 none 会给我任何有用的答案。当凯给我关于问题的建议时,我很容易找到问题所在。所以我不会结束这个问题,因为它可以帮助某人通过。
问题是您的背景设置有 9patch 图像,该图像未定义拉伸区域(左角和上角)和可绘制区域(右角和下角)。
解决方案是修改 9patch 图像以包含必要的信息,或者将填充设置为 0(XML 中的 android:padding="0dip"
或代码中的 setPadding(0)
)。
我有一个简单的XML:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".LoginActivity"
android:background="@drawable/login_background">
<LinearLayout
android:orientation="vertical"
android:layout_width="320dp"
android:layout_height="160dp"
android:layout_alignParentBottom="true"
android:layout_marginStart="218dp"
android:layout_marginBottom="25dp">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/editText"
android:textColor="@color/surtimax_gris_texto"
android:layout_gravity="center_horizontal"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textStyle="bold"
android:hint="@string/login_edittext_user_text"
android:textColorHint="@color/surtimax_gris_texto" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/editText2"
android:background="@drawable/login_edittext_background"
android:textColor="@color/surtimax_gris_texto"
android:layout_gravity="center_horizontal"
android:layout_marginTop="15dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textStyle="bold"
android:hint="@string/login_edittext_pass_text"
android:textColorHint="@color/surtimax_gris_texto" />
</LinearLayout>
</RelativeLayout>
问题是:当 RelativeLayout 有背景时在模拟器或真实设备中都没有显示 LinearLayout 和 EditText。
如果我只是删除背景一切正常......这很奇怪。
不是关于应用程序的错误日志。
minSdkVersion 17
targetSdkVersion 22
已更新
它使用正常背景图像(非 9patch)。所以问题是关于背景9patch图像。
已更新 2 在 SO 中有很多关于在后台使用 9patch 的 questions/answers,但是因为我面临的问题是应用背景,所以我开始在 google 中寻找 "background image problems"。当然 google 中的 none 会给我任何有用的答案。当凯给我关于问题的建议时,我很容易找到问题所在。所以我不会结束这个问题,因为它可以帮助某人通过。
问题是您的背景设置有 9patch 图像,该图像未定义拉伸区域(左角和上角)和可绘制区域(右角和下角)。
解决方案是修改 9patch 图像以包含必要的信息,或者将填充设置为 0(XML 中的 android:padding="0dip"
或代码中的 setPadding(0)
)。