web-dev-qa-db-ja.com

Androidでデフォルトのトーストメッセージの色と背景色を変更するにはどうすればよいですか?

背景色が白、メッセージ色が黒のトーストメッセージを作成したい。私のトーストメッセージは:

_Toast.makeText(Logpage.this, "Please Give Feedback...", 3000).show();
_

onCreate()ではなく別のメソッドで作成したかった。

25
Saranya

以下のようなカスタムトーストメッセージを作成できます。

Toast toast = new Toast(context);
toast.setDuration(Toast.LENGTH_LONG);

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view = inflater.inflate(R.layout.your_custom_layout, null);
toast.setView(view);
toast.show();

レイアウトファイル内に配置し、必要に応じて背景とテキストの色を指定できる1つのテキストビュー。

また、追加のカスタムレイアウトファイルを必要としない次の操作を実行できます。

Toast toast = Toast.makeText(context, R.string.string_message_id, Toast.LENGTH_LONG);
View view = toast.getView();
view.setBackgroundResource(R.drawable.custom_background);
TextView text = (TextView) view.findViewById(Android.R.id.message);
/*Here you can do anything with above textview like text.setTextColor(Color.parseColor("#000000"));*/
toast.show();
59
Android Killer

追加のレイアウトなしでトースト色を変更、2018

これは、Toastの実際の画像背景の色とテキストの色を変更する非常に簡単な方法です。追加のレイアウトやXMLの変更は必要ありません。

Toast toast = Toast.makeText(context, message, duration);
View view = toast.getView();

//Gets the actual oval background of the Toast then sets the colour filter
view.getBackground().setColorFilter(YOUR_BACKGROUND_COLOUR, PorterDuff.Mode.SRC_IN);

//Gets the TextView from the Toast so it can be editted
TextView text = view.findViewById(Android.R.id.message);
text.setTextColor(YOUR_TEXT_COLOUR);

toast.show();
46

デフォルトのToastテキストの色と背景の色を変更するには、次のようにします。

 Toast toast = Toast.makeText(MainActivity.this, "Please Give Feedback...", Toast.LENGTH_LONG);
 View view = toast.getView();

 //To change the Background of Toast
 view.setBackgroundColor(Color.TRANSPARENT);
 TextView text = (TextView) view.findViewById(Android.R.id.message);

 //Shadow of the Of the Text Color
 text.setShadowLayer(0, 0, 0, Color.TRANSPARENT);
 text.setTextColor(Color.BLACK);
 text.setTextSize(Integer.valueOf(getResources().getString(R.string.text_size)));
 toast.show();
9
Yugesh

トーストが以下のように見えるように、レイアウトファイルtoast.xmlを作成します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:background="@Android:color/background_dark">

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="This is a custom toast."
        Android:textColor="@Android:color/white"
        Android:layout_gravity="center_vertical" />

</LinearLayout>

Javaファイルでトーストを表示するには、次のコードを入力します。

public void showCustomAlert()
    {         
        Context context = getApplicationContext();
        // Create layout inflator object to inflate toast.xml file
        LayoutInflater inflater = getLayoutInflater();

        // Call toast.xml file for toast layout 
        View toast = inflater.inflate(R.layout.toast, null);

        Toast toast = new Toast(context);

        // Set layout to toast 
        toast.setView(toast);
        toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL,
                0, 0);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.show();         
    }
4
Akanksha Hegde

次のコードを使用してAndroidネイティブトーストをカスタマイズできます

/**
 * ShowToast
 */
public class ShowToast {
    public ShowToast(Context context, String info) {
        Toast toast = Toast.makeText(context, Html.fromHtml("<font color='#e3f2fd' ><b>" + info + "</b></font>"), Toast.LENGTH_LONG);
        toast.setGravity(Gravity.TOP, 0, 0);
        toast.show();
    }
}

背景を変更する場合は、トーストでカスタムレイアウトを使用する必要があります

4
Anoop M
Toast toast=   Toast.makeText(YOUR ACTIVITY NAME ,Toast.LENGTH_SHORT);
View view =toast.getView();
view.setBackgroundColor(Color.GREEN); //any color your want 
toast.show();
2
satej sarker

Kotlinバージョン:

 val toast = Toast.makeText(this, getString(R.string.back_again), Toast.LENGTH_SHORT)
 val view = toast.view
 view.background.setColorFilter(Color.BLACK, PorterDuff.Mode.SRC_IN)
 toast.show()

@AndroidKillerの答えに加えて、gravityとカスタムTextViewを以下のように設定することもできます。

Toast toast = Toast.makeText(context, context.getResources().getString(resID), Toast.LENGTH_LONG);
LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE );        
View toastView = li.inflate(R.layout.toast_hint_layout, null);
TextView text = (TextView) toastView.findViewById(R.id.hint_text_tv);
text.setText(resID);
toast.setView(toastView);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toastView.setBackgroundResource(R.drawable.toast_9_patch);          
toast.show();

背景のドローアブルは nine-patch PNG でなければなりません。

次のようなXMLでImageViewと複数のTextViewsを挿入することもできます。

<LinearLayout Android:id="@+id/layout_root"
              xmlns:Android="http://schemas.Android.com/apk/res/Android"
              Android:layout_width="wrap_content"
              Android:layout_height="wrap_content"
              Android:orientation="horizontal">
    <ImageView
        Android:layout_width="32dp"
        Android:layout_height="43dp"
        Android:src="@drawable/lightbulb"
        />
    <LinearLayout
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginLeft="5dp"
        Android:orientation="vertical"
        >
        <TextView
            Android:id="@+id/hint_text_tv"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:textColor="#ccc"
            Android:textSize="14dp"
            />

        <TextView
            Android:id="@+id/hint_text_tv"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="(disable hints in preferences)"
            Android:textColor="#555"
            Android:textSize="11dp"
            />
    </LinearLayout>
</LinearLayout>
0
pjco
static void CustomToast(Context context, String text, int duration,
                                    @Nullable Integer backgroundColor,
                                    @Nullable Integer textColor){
        Toast t = Toast.makeText(context,text,duration);
        if (backgroundColor != null)
            t.getView()
                    .setBackgroundTintList(ColorStateList.valueOf(backgroundColor));
        if (textColor != null)
            ((TextView)t.getView().findViewById(Android.R.id.message))
                    .setTextColor(textColor);
        t.show();
    }
0
G Dias