Изменение фона тоста в соответствии с темой занятия - PullRequest
21 голосов
/ 11 августа 2011

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

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

Ответы [ 3 ]

51 голосов
/ 28 марта 2012

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

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

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

28 голосов
/ 09 января 2013

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

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

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

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

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

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

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

4 голосов
/ 28 марта 2012

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

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...