gpt4 book ai didi

java - 如何制作带有角半径和起始颜色的android edittext样式?

转载 作者:行者123 更新时间:2023-12-01 09:33:06 28 4
gpt4 key购买 nike

How to do this in android ? Is it possible using some selector designs? I have one option that I can use a icon for this and set it as drawableLeft but without using the icon how can I achieve this please guide me in good direction

如何在 Android 中执行此操作?是否可以使用一些选择器设计?我有一个选项,我可以为此使用图标并将其设置为drawableLeft,但如果不使用图标,我怎样才能实现这一目标,请指导我正确的方向

最佳答案

您可以使用自定义Drawable来实现这一点。像这样的东西:

public class BackgroundColorDrawable extends Drawable {

private Paint paint;
private RectF rectF;
private float cornerRadius = 20f;
private float borderThickness = 3.5f;
private int insetColour = Color.GREEN;

public BackgroundColorDrawable() {

paint = new Paint();
paint.setAntiAlias(true);
rectF = new RectF();
}

public void setInsetColour(int insetColour) {
this.insetColour = insetColour;
invalidateSelf();
}

public void setBorderThickness(float borderThickness) {
this.borderThickness = borderThickness;
invalidateSelf();
}

public void setCornerRadius(float cornerRadius) {
this.cornerRadius = cornerRadius;
invalidateSelf();
}

@Override
public void draw(Canvas canvas) {

paint.setColor(Color.GRAY);
rectF.set(0f, 0f, canvas.getWidth(), canvas.getHeight());
canvas.drawRoundRect(rectF, cornerRadius, cornerRadius, paint);

paint.setColor(Color.WHITE);
rectF.set(borderThickness, borderThickness, canvas.getWidth() - borderThickness, canvas.getHeight() - borderThickness);
canvas.drawRoundRect(rectF, cornerRadius, cornerRadius, paint);

paint.setColor(insetColour);
rectF.set(borderThickness, borderThickness, 60f, canvas.getHeight() - borderThickness);
canvas.drawRoundRect(rectF, cornerRadius, cornerRadius, paint);

paint.setColor(Color.WHITE);
rectF.set(30f, borderThickness, 60f, canvas.getHeight() - borderThickness);
canvas.drawRect(rectF, paint);
}

@Override
public void setAlpha(int alpha) { /* to implement */ }

@Override
public void setColorFilter(ColorFilter colorFilter) { /* to implement */}

@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
}

然后无论您在哪里使用 EditText,您只需在代码中设置背景可绘制:

BackgroundColorDrawable drawable = new BackgroundColorDrawable();
editText.setBackground(drawable);

请注意,此示例中有相当多的过度绘制(同一像素被绘制多次),您可以对其进行优化。

您还必须在 EditText 上设置一些左侧填充,以使光标正确对齐。

关于java - 如何制作带有角半径和起始颜色的android edittext样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39234190/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com