1

Kindle Fire のトーストのデフォルトの色は、白い背景に黒いテキストです。この回答の指示に従って、テキストの色を白に、背景の色を黒に設定しようとしましたが、これらの変更後も背景の後ろに白が表示されるため、白い背景の黒い背景に白いテキストのように見えます。背景全体を黒くするために設定する必要がある他のフィールドはありますか? これが私のコードです:

  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 内にあることがわかります。内部に含まれる TextView ではなく、LinearLayout の背景を変更する必要があります。

描画可能なリソース (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 に答える