敬酒背景改变,以配合活动的主题

我为我所有的活动创build了一个自定义的主题。 在主题中,我设置了android:background,而这恰好导致任何对话框或吐司消息看起来很奇怪。

如何防止吐司和其他对话框吸收主题的属性?

Solutions Collecting From Web of "敬酒背景改变,以配合活动的主题"

您可以通过以下代码轻松创build自定义敬酒:

Toast toast = Toast.makeText(context, resTxtId, Toast.LENGTH_LONG); View view = toast.getView(); view.setBackgroundResource(R.drawable.custom_bkg); TextView text = (TextView) view.findViewById(android.R.id.message); /*here you can do anything with text*/ toast.show(); 

或者你可以实例化一个完全自定义的吐司:

 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.custom_layout, null); toast.setView(view); toast.show(); 

对话定制是一个更复杂的例程。 但是也有类似的解决方法。

我意识到这个问题已经回答了,现在这个post已经很老了。 但是我想我会给那些遇到这个问题的人留下一个答案。

今天我遇到了这个问题,我解决的方法是通过显示Toast消息,如下所示:

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

与此相反(假设消息是从视图内调用的):

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

它清除了我所遇到的问题。 反正希望它有帮助。 这里是链接到我的问题类似的话题。

吐司背景颜色被改变

这里来完整的例子,用于跨活动定制的敬酒。

displayToast

 // display customized Toast message public static int SHORT_TOAST = 0; public static int LONG_TOAST = 1; public static void displayToast(Context caller, String toastMsg, int toastType){ try {// try-catch to avoid stupid app crashes LayoutInflater inflater = LayoutInflater.from(caller); View mainLayout = inflater.inflate(R.layout.toast_layout, null); View rootLayout = mainLayout.findViewById(R.id.toast_layout_root); ImageView image = (ImageView) mainLayout.findViewById(R.id.image); image.setImageResource(R.drawable.img_icon_notification); TextView text = (TextView) mainLayout.findViewById(R.id.text); text.setText(toastMsg); Toast toast = new Toast(caller); //toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setGravity(Gravity.BOTTOM, 0, 0); if (toastType==SHORT_TOAST)//(isShort) toast.setDuration(Toast.LENGTH_SHORT); else toast.setDuration(Toast.LENGTH_LONG); toast.setView(rootLayout); toast.show(); } catch(Exception ex) {// to avoid stupid app crashes Log.w(TAG, ex.toString()); } } 

toast_layout.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toast_layout_root" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:background="#DAAA" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginRight="10dp" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:textColor="#FFF" /> </LinearLayout>