Gradient Drawable - 以编程方式获取描边颜色
Gradient Drawable - getting the Stroke Color programmatically
我编辑了文本,其背景如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="2dip"
android:layout_height="2dip"
android:shape="rectangle" >
<corners
android:radius="2dp"
/>
<gradient
android:angle="45"
android:centerX="35%"
android:centerColor="#fff"
android:startColor="#fff"
android:endColor="#fff"
android:type="linear"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="250dp"
android:height="50dp"
/>
<stroke
android:width="1dp"
android:color="@color/mygray"
/>
</shape>
我需要在出现验证错误时更改此颜色并将其设置为红色。
在 addTextChangedListener 上,我需要将其重置为灰色。
下面是我的变色函数
public void changeBackgroudndOnEditTextChange(EditText ... editTexts){
for(EditText editText:editTexts){
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
setBackground(editText,context.getResources().getColor(R.color.red_color));
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
private void setBackground(View v, int backgroundColor) {
GradientDrawable shape = new GradientDrawable();
shape.setSize(v.getWidth(), v.getHeight());
shape.setStroke(5,backgroundColor);
v.setBackgroundDrawable(shape);
}
我如何检查背景是否为灰色,然后只将其更改为红色,否则不需要,因为它会被调用多次。
您可以简单地将最后一个背景设置保存在一个标签中,然后检查标签。
只需将以下行添加到 setBackground
的开头
Integer color = v.getTag();
if (color != null && color.intValue() == backgroundColor )
return;
v.setTag(Integer.valueof(backgroundColor));
我编辑了文本,其背景如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="2dip"
android:layout_height="2dip"
android:shape="rectangle" >
<corners
android:radius="2dp"
/>
<gradient
android:angle="45"
android:centerX="35%"
android:centerColor="#fff"
android:startColor="#fff"
android:endColor="#fff"
android:type="linear"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="250dp"
android:height="50dp"
/>
<stroke
android:width="1dp"
android:color="@color/mygray"
/>
</shape>
我需要在出现验证错误时更改此颜色并将其设置为红色。 在 addTextChangedListener 上,我需要将其重置为灰色。
下面是我的变色函数
public void changeBackgroudndOnEditTextChange(EditText ... editTexts){
for(EditText editText:editTexts){
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
setBackground(editText,context.getResources().getColor(R.color.red_color));
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
private void setBackground(View v, int backgroundColor) {
GradientDrawable shape = new GradientDrawable();
shape.setSize(v.getWidth(), v.getHeight());
shape.setStroke(5,backgroundColor);
v.setBackgroundDrawable(shape);
}
我如何检查背景是否为灰色,然后只将其更改为红色,否则不需要,因为它会被调用多次。
您可以简单地将最后一个背景设置保存在一个标签中,然后检查标签。
只需将以下行添加到 setBackground
Integer color = v.getTag();
if (color != null && color.intValue() == backgroundColor )
return;
v.setTag(Integer.valueof(backgroundColor));