找了很久,原來是因為textView預設沒有設置一個非透明度的預設顏色,
原本程式碼如下:
Xml 原本設定
<TextView
android:id="@+id/tv_login_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start|center_vertical"
android:maxLines="1"
android:text="@string/login_or_add_member"
android:textSize="16dp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"></TextView>
android:id="@+id/tv_login_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start|center_vertical"
android:maxLines="1"
android:text="@string/login_or_add_member"
android:textSize="16dp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"></TextView>
設定漸層色
try {
float tvWidth =
textView.getPaint().measureText(textView.getText().toString());
float tvHeight =
textView.getPaint().getTextSize();
LinearGradient linearGradient = new LinearGradient(0, 0, tvWidth, tvHeight, startColor,
endColor
, LinearGradient.TileMode.CLAMP);
textView.getPaint().setShader(linearGradient);
textView.invalidate();
} catch (Exception e) {
Log.d(TAG, "setTextGradient error: " + Log.getStackTraceString(e));
}
float tvWidth =
textView.getPaint().measureText(textView.getText().toString());
float tvHeight =
textView.getPaint().getTextSize();
LinearGradient linearGradient = new LinearGradient(0, 0, tvWidth, tvHeight, startColor,
endColor
, LinearGradient.TileMode.CLAMP);
textView.getPaint().setShader(linearGradient);
textView.invalidate();
} catch (Exception e) {
Log.d(TAG, "setTextGradient error: " + Log.getStackTraceString(e));
}
原本效果如下圖:
XML加上android:textColor="@color/black"
<TextView
android:id="@+id/tv_login_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start|center_vertical"
android:maxLines="1"
android:text="@string/login_or_add_member"
android:textSize="16dp"
android:textStyle="bold"
android:textColor="@color/black"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"></TextView>
android:id="@+id/tv_login_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start|center_vertical"
android:maxLines="1"
android:text="@string/login_or_add_member"
android:textSize="16dp"
android:textStyle="bold"
android:textColor="@color/black"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"></TextView>
效果如下圖:
0 留言