Подтвердить что ты не робот

Изменение фона тоста для соответствия теме активности

Я создал пользовательскую тему для своих действий, которые все они используют. В теме я установил андроид: фон, и это происходит, чтобы вызвать какое-либо диалоговое или тост-сообщение, выглядящее очень странным.

Как предотвратить тосты и другие диалоги, чтобы поглотить свойства темы?

4b9b3361

Ответ 1

Вы можете легко создать пользовательский тост по следующему коду:

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();

Настройка диалога - это более сложная процедура. Но есть аналогичное обходное решение.

Ответ 2

Я понимаю, что на этот вопрос был дан ответ, и сообщение на этом этапе довольно устарело. Однако я думал, что оставлю ответ для тех, кто сталкивается с этим вопросом.

У меня возникла проблема с этой проблемой сегодня, и так, как я решил, это было отображение моих сообщений Toast следующим образом:

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

В противоположность этому (предполагая, что сообщение вызывается изнутри представления):

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

Он выяснил проблемы, которые у меня были. В любом случае, это поможет. Вот ссылка на мой вопрос по аналогичной теме.

Изменен цвет фона тоста

Ответ 3

здесь приведен полный пример, который можно использовать для настраиваемых тостов в разных действиях.

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>