Android 白色toast
时间: 2023-11-22 08:50:22 浏览: 100
以下是设置Android白色Toast的代码示例:
```java
Toast toast = Toast.makeText(getApplicationContext(), "This is a white toast", Toast.LENGTH_SHORT);
View view = toast.getView();
TextView text = view.findViewById(android.R.id.message);
text.setTextColor(Color.WHITE);
view.setBackgroundColor(Color.BLACK);
toast.show();
```
该代码将Toast的文本颜色设置为白色,背景颜色设置为黑色。你可以根据需要更改文本和背景颜色。
相关问题
安卓toast中用application导致深色模式不生效
在Android中,Toast是一个用于显示短促消息的小部件,通常用于临时通知用户某些操作的结果。当你在应用程序级别(Application Context)使用Toast时,尤其是在AppCompat主题下,如果开启了系统的深色模式(Dark Mode),默认情况下Toast可能会采用系统当前的主题颜色,这可能不会按照预期显示为深色。
如果你希望在深色模式下Toast显示为白色或者其他指定的颜色,你需要自定义 Toast 的样式。你可以创建一个自定义的 Toast 类,覆盖它的绘制方法(onDraw()),并根据当前的应用主题设置背景和文字颜色。例如:
```java
public class CustomToast extends Toast {
public CustomToast(Context context) {
super(context);
}
public CustomToast(Context context, int resId) {
super(context, resId);
}
public CustomToast(Context context, CharSequence text) {
this(context, R.layout.custom_toast_layout, text);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
// 设置 toast 的高度,可以根据需要调整
int size = MeasureSpec.getSize(heightMeasureSpec);
setMeasuredDimension(getWidth(), size);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && AppCompatDelegate.isCompatVectorDrawablesEnabled()) {
Resources.Theme theme = getApplicationContext().getTheme();
TypedArray attrs = theme.obtainStyledAttributes(R.styleable.AppCompatTheme);
int textColorPrimaryInverse = attrs.getColor(R.styleable.AppCompatTheme_textColorPrimaryInverse, ThemeUtils.getColorFromAttrOrRes(this, android.R.attr.textColorPrimaryInverse));
attrs.recycle();
// 设置文本颜色为深色模式下的反向颜色
Paint paint = new Paint();
paint.setColor(textColorPrimaryInverse);
getTextView().setTextPaint(paint);
}
}
}
```
然后在需要的地方使用自定义的 `CustomToast` 而不是默认的 `Toast`:
```java
CustomToast.makeText(context, "这是定制的深色模式 Toast", Toast.LENGTH_SHORT).show();
```
阅读全文