14

私はプロジェクトに取り組んでおり、次のようにしてアプリケーションの背景を白に設定しています。

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:actionBarSize">140dp</item>
    <item name="android:background">#ffffff</item>
</style>

これは魅力的ですが、問題はトーストメッセージが白い背景で表示されていることです。奇妙なことに、私はスプラッシュスクリーンをプロジェクトに統合し、ユーザーがログインするとトーストメッセージが正常に表示されます。

それは本当に奇妙で、この問題について助けていただければ幸いです。

編集:問題を示すスクリーンショットを追加しました。スクリーンショットは、最初のトースト(不要な効果あり)がフェードアウトし、新しいトースト(デフォルト)がフェードインしているときに撮影されます。

ここに画像の説明を入力してください

4

5 に答える 5

28

問題を解決しました。Toast の背景色が変更された理由は、内部に含まれている View オブジェクトのコンテキストで渡す方法が原因でした。

次のコード行により、背景色が不要な白色に変更されます。

Toast.makeText(v.getContext(), "Checking login details...", Toast.LENGTH_SHORT).show();

このコード行は、Toast をデフォルトのシステム スタイルに戻します。

Toast.makeText(getApplicationContext(), "Checking login details...", Toast.LENGTH_SHORT).show();

私は学んでいるだけなので、このように修正することに大きな問題があるかどうかはわかりません。誰かが問題を見ることができる場合は、共有してください。それはうまくいっているようですが。

于 2013-01-09T19:34:22.760 に答える
0

私にとって使用getApplicationContext()はオプションではありませんでした。これと同じ問題を抱えている他の人にとっては、次のようにトーストをデフォルト設定に戻すことができます。

//Create your Toast with whatever params you need
Toast toast = Toast.makeText(getActivity(), "Refreshing...", Toast.LENGTH_SHORT);  

//Set the background for the toast using android's default toast_frame.
//Optionally you can set the background color to #646464 which is the
//color of the frame
View view = toast.getView();
view.setBackgroundResource(android.R.drawable.toast_frame); 

//Get the TextView for the toast message so you can customize
TextView toastMessage = (TextView) view.findViewById(android.R.id.message); 

//Set background color for the text.
toastMessage.setBackgroundColor((Color.parseColor("#646464"))); 
toast.show();
于 2015-05-15T19:30:50.823 に答える
-1

WINthropの答えへの追加。テキストボックスの背景色を #646464 に設定する代わりに、透明に設定して、トーストが元の半透明のトーストのように見えるようにすることができます

private void showToast(Context context,String msg,int duration){
        Toast toast = Toast.makeText(context,msg,duration);

        View view = toast.getView();
        view.setBackgroundResource(android.R.drawable.toast_frame);

        TextView toastMessage = (TextView) view.findViewById(android.R.id.message);

        toastMessage.setBackgroundColor(Color.TRANSPARENT);

        toast.show();
    }
于 2016-07-04T16:00:19.570 に答える