如何将Kindle Fire上的Toast通知更改为黑色背景上的白色文本?

时间:2012-03-22 21:27:18

标签: android toast kindle-fire

Kindle Fire上Toast的默认颜色是白色背景上的黑色文字。我按照this answer中的说明尝试将文本颜色设置为白色,将背景颜色设置为黑色,但在这些更改后,背景后面仍然显示白色,因此它看起来像黑色的白色文本在白色背景的背景。我需要设置一些其他字段才能使整个背景变黑吗?这是我的代码:

  Context context = ctx.getApplicationContext();
  CharSequence text = "Toasty text...";
  int duration = Toast.LENGTH_SHORT;

  Toast toast = Toast.makeText(context, text, duration);
  TextView v = (TextView) toast.getView().findViewById(android.R.id.message);
  v.setTextColor(Color.WHITE);
  v.setBackgroundColor(Color.BLACK);
  toast.show();

编辑:我最终结合使用CommonsWare的答案和this link来创建默认的吐司并设置颜色。

2 个答案:

答案 0 :(得分:3)

您可以尝试使用常规构造函数,然后使用makeText()setView()的自定义布局,而不是使用静态Toast方法。

答案 1 :(得分:1)

CommonsWare适合对吐司造型的最终控制。但是,如果你想继续前进,请尝试:

toast.getView().setBackgroundDrawable(R.drawable.toast);

你可以看到TextView在一个LinearLayout里面,它上面有一个可绘制的背景。您需要更改LinearLayout的背景,而不是包含在其中的TextView。

对于可绘制资源(drawable / toast.xml),如下所示:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
  <gradient android:startColor="#000000" android:centerColor="#202020" android:endColor="#000000" android:angle="90" />
  <stroke android:width="1dp" android:color="#808080" />
  <corners android:radius="8dp" />
</shape>

但是你最好每个CommonsWare做一个自定义布局...