EditText 在选择时丢失背景
EditText loses background on selection
我有一个具有自定义 drawable
背景的 EditText
框,但是每当您 select EditText
输入内容时,背景就会消失并使文本无法显示阅读(与应用程序背景颜色相同)
我要说的是:
背景就这样消失了,我不确定为什么会这样。这是我的 .xml
<EditText
android:id="@+id/enterCode"
android:layout_width="237sp"
android:layout_height="55sp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="6dp"
android:layout_marginBottom="8dp"
android:autofillHints="true"
android:background="@drawable/rect_yellow_border"
android:ems="10"
android:hint="Enter Game PIN"
android:inputType="text"
android:textAlignment="center"
android:textColor="@color/colorPrimary"
android:textColorHint="#40292929"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.503"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/products_toolbar"
app:layout_constraintVertical_bias="0.309" />
我也尝试过在 Java
中设置背景,但是当我尝试这样做时问题也没有解决。有帮助吗?
这是我的 drawable
文件。这有点不必要和奇怪,因为我只是编辑了我的一个圆形的代码并将其变成了正方形
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" >
<shape android:shape="rectangle" >
<stroke android:width="3dip" android:color="#ffc847" />
<gradient android:angle="-180" android:startColor="#ffffff" android:endColor="#ffffff" />
</shape>
</item>
<item android:state_focused="true">
<shape android:shape="rectangle" >
</shape>
</item>
<item >
<shape android:shape="rectangle" >
<stroke android:width="3dip" android:color="#ffc847" />
<stroke android:width="3dip" android:color="#ffc847" />
<solid android:color="#ffc847"/>
<gradient android:angle="-45" android:startColor="#ffffff" android:endColor="#ffffff" />
</shape>
</item>
</selector>
在我的 Activity
中,我所做的所有定义 EditText
是这样的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_private_room_lobby);
final Button createPrivateGame = findViewById(R.id.createPrivateGame);
final Button joinPrivateRoom = findViewById(R.id.joinPrivateGame);
final EditText pinEntry = findViewById(R.id.enterCode);
joinPrivateRoom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String pin = pinEntry.getText().toString().trim();
if(TextUtils.isEmpty(pin) || pin.length() > 6 || pin.length() < 6)
{
Toast.makeText(PrivateRoomLobby.this, "Please enter a 6 digit PIN to enter the room", Toast.LENGTH_LONG).show();
} else {
joinGame(pin);
}
}
});
选择器用于根据组件的各种状态定义view
组件的背景颜色或背景图像。如需更多详细信息,请查看 this
您需要使用唯一的 shape
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<stroke android:width="3dip" android:color="#ffc847" />
<solid android:color="#ffffff"/>
<!-- <gradient android:angle="-45" android:startColor="#ffffff" android:endColor="#ffffff" />-->
</shape>
我有一个具有自定义 drawable
背景的 EditText
框,但是每当您 select EditText
输入内容时,背景就会消失并使文本无法显示阅读(与应用程序背景颜色相同)
我要说的是:
背景就这样消失了,我不确定为什么会这样。这是我的 .xml
<EditText
android:id="@+id/enterCode"
android:layout_width="237sp"
android:layout_height="55sp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="6dp"
android:layout_marginBottom="8dp"
android:autofillHints="true"
android:background="@drawable/rect_yellow_border"
android:ems="10"
android:hint="Enter Game PIN"
android:inputType="text"
android:textAlignment="center"
android:textColor="@color/colorPrimary"
android:textColorHint="#40292929"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.503"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/products_toolbar"
app:layout_constraintVertical_bias="0.309" />
我也尝试过在 Java
中设置背景,但是当我尝试这样做时问题也没有解决。有帮助吗?
这是我的 drawable
文件。这有点不必要和奇怪,因为我只是编辑了我的一个圆形的代码并将其变成了正方形
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" >
<shape android:shape="rectangle" >
<stroke android:width="3dip" android:color="#ffc847" />
<gradient android:angle="-180" android:startColor="#ffffff" android:endColor="#ffffff" />
</shape>
</item>
<item android:state_focused="true">
<shape android:shape="rectangle" >
</shape>
</item>
<item >
<shape android:shape="rectangle" >
<stroke android:width="3dip" android:color="#ffc847" />
<stroke android:width="3dip" android:color="#ffc847" />
<solid android:color="#ffc847"/>
<gradient android:angle="-45" android:startColor="#ffffff" android:endColor="#ffffff" />
</shape>
</item>
</selector>
在我的 Activity
中,我所做的所有定义 EditText
是这样的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_private_room_lobby);
final Button createPrivateGame = findViewById(R.id.createPrivateGame);
final Button joinPrivateRoom = findViewById(R.id.joinPrivateGame);
final EditText pinEntry = findViewById(R.id.enterCode);
joinPrivateRoom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String pin = pinEntry.getText().toString().trim();
if(TextUtils.isEmpty(pin) || pin.length() > 6 || pin.length() < 6)
{
Toast.makeText(PrivateRoomLobby.this, "Please enter a 6 digit PIN to enter the room", Toast.LENGTH_LONG).show();
} else {
joinGame(pin);
}
}
});
选择器用于根据组件的各种状态定义view
组件的背景颜色或背景图像。如需更多详细信息,请查看 this
您需要使用唯一的 shape
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<stroke android:width="3dip" android:color="#ffc847" />
<solid android:color="#ffffff"/>
<!-- <gradient android:angle="-45" android:startColor="#ffffff" android:endColor="#ffffff" />-->
</shape>