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_width
和layout_height
在大多数情况下你可以将它们设置为 0,约束将确定正确的宽度和高度,你也不需要需要使用边距,如果您正确使用偏差、链、组、障碍、指南等,您的约束将处理它们,请了解有关约束布局的更多信息,您可以将上述布局文件中的行减少一半。
this 教程会给你一个好的开始,也可以观看该系列的其他视频
祝你有美好的一天
【讨论】:
非常感谢。我理解您的解释,我将通过您提供的链接的帮助来尽量减少约束的混淆。祝您有美好的一天,希望您保持安全。以上是关于editText 背景设置但在应用程序启动时不显示的主要内容,如果未能解决你的问题,请参考以下文章
ImageView 上的透明背景 EditText 不会显示光标
didReceiveRemoteNotification 在单击通知(背景)时不工作,但在应用程序为前台时工作
进程启动但在使用 CreateProcessLogonW 或类似方法启动时不起作用