gpt4 book ai didi

android - 如何在android中为AppCompatButton的文本颜色创建水平渐变

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:08 28 4
gpt4 key购买 nike

我想为我的 AppCompatButton 生成水平文本颜色渐变。我能够通过

完成垂直文本颜色渐变
val signInBtn = view.findViewById<AppCompatButton>(R.id.btn_sign_in)
val textShader = LinearGradient(0f, 0f, 0f, signInBtn.textSize,
ContextCompat.getColor(context, R.color.gradient_start),
ContextCompat.getColor(context, R.color.gradient_end), TileMode.CLAMP)
signInBtn.paint.shader = textShader

我试过更改 x2 值,但似乎没有任何效果。任何帮助将不胜感激。

这是我的按钮 xml 布局

<android.support.v7.widget.AppCompatButton
android:id="@+id/btn_sign_in"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/big"
android:layout_marginStart="@dimen/big"
android:layout_marginTop="@dimen/big"
android:background="@color/white"
android:text="@string/sign_in"
android:textAllCaps="false"
android:fadingEdge="horizontal"
android:scrollHorizontally="true"
android:textColor="@color/white"/>

最佳答案

如果您想在 XML 中执行此操作,那么“Zephyr”方法非常适合此操作,但如果想动态执行此操作,您可以尝试类似

Button theButton = (Button)findViewById(R.id.thebutton);
ShapeDrawable.ShaderFactory sf = new ShapeDrawable.ShaderFactory() {
@Override
public Shader resize(int width, int height) {
LinearGradient lg = new LinearGradient(0, 0, 0, theButton.getHeight(),
new int[] {
Color.LIGHT_GREEN,
Color.WHITE,
Color.MID_GREEN,
Color.DARK_GREEN }, //substitute the correct colors for these
new float[] {
0, 0.45f, 0.55f, 1 },
Shader.TileMode.REPEAT);
return lg;
}
};
PaintDrawable p = new PaintDrawable();
p.setShape(new RectShape());
p.setShaderFactory(sf);
theButton.setBackgroundDrawable((Drawable)p);

不确定,但在我的例子中它显示水平渐变

关于android - 如何在android中为AppCompatButton的文本颜色创建水平渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46398343/

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