1

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

  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 的答案和这个链接来创建默认吐司并设置颜色。

4

2 回答 2

3

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

于 2012-03-22T22:27:02.987 回答
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 进行自定义布局...

于 2012-03-29T17:39:36.803 回答