editText 背景设置但在应用程序启动时不显示

Posted

技术标签:

【中文标题】editText 背景设置但在应用程序启动时不显示【英文标题】:editText background set but does not show up when application is launched 【发布时间】:2020-10-04 06:58:32 【问题描述】:

我创建了一个登录页面,其中包含两个用于用户名和密码的 editText 字段。我还在活动中包含了一个 ImageView。 我制作了一个 XML 文件来为 editText 字段制作圆角白色背景。然而,这并没有奏效,仍然是透明的。将创建的 XML 文件的背景更改为简单的白色时,我仍然看不到 editText 字段。

以下是我用于以下用途的代码:

登录.XML

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/constraintLayout"
    android:layout_
    android:layout_
    android:clipToPadding="false"
    android:onClick="Clicked"
    android:padding="10dp"
    android:paddingBottom="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="10dp"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_
        android:layout_
        android:layout_marginBottom="17dp"
        android:layout_marginEnd="327dp"
        android:layout_marginStart="84dp"
        android:foreground="@drawable/emailsignup"
        android:text="@string/button"
        app:layout_constraintBottom_toTopOf="@+id/editTextTextPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.104"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button2"
        app:layout_constraintVertical_bias="1.0" />

    <Button
        android:id="@+id/button2"
        android:layout_
        android:layout_
        android:layout_marginEnd="146dp"
        android:layout_marginStart="63dp"
        android:layout_marginTop="200dp"
        android:foreground="@drawable/gmailsignup"
        android:text="@string/button2"
        app:layout_constraintBottom_toTopOf="@+id/button"
        app:layout_constraintEnd_toStartOf="@+id/imageView"
        app:layout_constraintHorizontal_bias="0.006"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

     <Button
        android:id="@+id/button3"
        android:layout_
        android:layout_
        android:layout_marginBottom="269dp"
        android:layout_marginEnd="253dp"
        android:layout_marginStart="150dp"
        android:layout_marginTop="43dp"
        android:background="@drawable/loginbg"
        android:fontFamily="monospace"
        android:text="@string/LoginText"
        android:textSize="18sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toTopOf="@+id/imageView"
        app:layout_constraintEnd_toStartOf="@+id/imageView"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editTextTextPassword"
        app:layout_constraintVertical_bias="0.0" />

     <EditText
         android:id="@+id/editTextTextPassword"
         android:layout_
         android:layout_
         android:layout_marginBottom="132dp"
         android:layout_marginEnd="95dp"
         android:layout_marginStart="179dp"
         android:layout_marginTop="430dp"
         android:autofillHints=""
         android:background="@drawable/edittextround"
         android:ems="10"
         android:fontFamily="sans-serif-medium"
         android:hint="@string/PasswordHint"
         android:inputType="textPassword"
         android:textSize="24sp"
         app:layout_constraintBottom_toTopOf="@+id/imageView"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintHorizontal_bias="0.978"
         app:layout_constraintStart_toEndOf="@+id/imageView"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintVertical_bias="0.0" />

     <EditText
         android:id="@+id/editTextTextPersonName"
         android:layout_
         android:layout_
         android:layout_marginBottom="320dp"
         android:layout_marginEnd="153dp"
         android:layout_marginStart="58dp"
         android:layout_marginTop="88dp"
         android:autofillHints=""
         android:ems="10"
         android:background="@drawable/edittextround"
         android:hint="@string/LoginTextHint"
         android:inputType="textPersonName"
         android:textSize="24sp"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toStartOf="@+id/imageView"
         app:layout_constraintHorizontal_bias="0.0"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/imageView"
         app:layout_constraintVertical_bias="0.962" />

     <ImageView
         android:id="@+id/imageView"
         android:layout_
         android:layout_
         android:adjustViewBounds="false"
         android:contentDescription="@string/todo"
         android:cropToPadding="false"
         android:foreground="?android:attr/selectableItemBackgroundBorderless"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintHorizontal_bias="0.503"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintVertical_bias="0.344"
         app:srcCompat="@drawable/picture1_2" />

</androidx.constraintlayout.widget.ConstraintLayout>

edittextround.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle" android:padding="10dp">
     <solid android:color="#FFFFFF"/>
     <gradient
         android:centerY="0.2"
         android:startColor="#D3D3D3"
         android:centerColor="#65FFFFFF"
         android:endColor="#00FFFFFF"
         android:angle="270"
         />
     <stroke
         android:
         android:color="#BDBDBD" />
     <corners
         android:radius="15dp" />
</shape>

我尝试将edittextbackground.xml放在登录按钮上,效果很好。

与此活动相关的图片如下:

Image of the design

请帮我弄清楚为什么我的 editText 字段不显示背景

【问题讨论】:

不设置背景会怎样? 我试过你的代码,它似乎工作得很好,也许它刚刚在你的预览选项卡上呈现。你尝试在设备上运行它吗 @AbhinavChauhan 我尝试删除editText背景,但在删除ImageView本身时没有任何改变,但我也希望放置图像 @Ibrahim117 我确实尝试在手机上运行,​​但我看不到 editText 字段 @MirandaJones 你绝对应该查看 Abhinav 的回答,他有一个合法的观点。您的 ImageView 呈现在 editText 之上,并且具有约束布局的东西是将最后一个元素保持在顶部,并且在您的情况下,最后一个元素是具有静态高度和宽度的图像视图,因此几乎覆盖了整个屏幕,尝试将您的图像视图放在约束布局下方的最顶部,如果您将其用作背景,只需在约束布局中使用背景属性,您不必为此定义单独的元素。 【参考方案1】:

知道了

所以问题在下面

app:layout_constraintBottom_toTopOf="@+id/imageView" app:layout_constraintTop_toBottomOf="@+id/imageView"

您正在将约束设置为 imageView,并且该 imageView 也呈现在 Editext 区域中,但不在背景中,因为它与 Editexts 的高度相同,所以如果您只是增加 editexts 的高度,它们将显示出来,我试过了,有效 只需在两个edittexts中添加android:elevation="1dp",imageview在0dp,这样editext就会显示在它上面。

虽然它有效,但您的限制令人困惑,请改用parent

app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/button" 也可以

我还想说,如果你正确使用约束布局,你将不需要设置layout_widthlayout_height 在大多数情况下你可以将它们设置为 0,约束将确定正确的宽度和高度,你也不需要需要使用边距,如果您正确使用偏差、链、组、障碍、指南等,您的约束将处理它们,请了解有关约束布局的更多信息,您可以将上述布局文件中的行减少一半。

this 教程会给你一个好的开始,也可以观看该系列的其他视频

祝你有美好的一天

【讨论】:

非常感谢。我理解您的解释,我将通过您提供的链接的帮助来尽量减少约束的混淆。祝您有美好的一天,希望您保持安全。

以上是关于editText 背景设置但在应用程序启动时不显示的主要内容,如果未能解决你的问题,请参考以下文章

ImageView 上的透明背景 EditText 不会显示光标

didReceiveRemoteNotification 在单击通知(背景)时不工作,但在应用程序为前台时工作

活动开始但在屏幕关闭或锁定时不可见

进程启动但在使用 CreateProcessLogonW 或类似方法启动时不起作用

Unity 2D 中的视频播放器播放音频但在处于非活动状态后设置为活动时不显示视觉效果

ContentControl 在应用程序通过 UI 自动化测试启动时不可见,但在用户启动应用程序时可见