Пользовательский тост в android: простой пример

Я новичок в программировании на Android. Может ли кто-нибудь дать мне простой пример, показывающий пользовательское уведомление для тостов в Android?

Используйте ниже код пользовательского тоста, он может вам помочь.

toast.xml

<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> 

MainActivity.java

 LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.toast_layout, (ViewGroup) findViewById(R.id.toast_layout_root)); ImageView image = (ImageView) layout.findViewById(R.id.image); image.setImageResource(R.drawable.android); TextView text = (TextView) layout.findViewById(R.id.text); text.setText("Hello! This is a custom toast!"); Toast toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show(); 

И проверьте ниже ссылки также для Custom Toast

Пользовательский тост с аналоговыми часами

Я понимаю, что этот вопрос слишком велик, чтобы отвечать, Но все же я думаю, что это стоит того, чтобы разделить, поскольку это уменьшит количество кода для создания тоста.

Тост предназначен для отображения сообщений на короткий промежуток времени; Итак, согласно моему пониманию, вы хотели бы настроить его, добавив в него изображение и изменив размер, цвет текста сообщения. Если это все, вы хотите сделать, тогда вам не нужно делать отдельный макет и раздувать его до экземпляра Toast. Представление Toast по умолчанию содержит TextView для отображения сообщений на нем. Итак, если у нас есть ссылка на идентификатор ресурса этого TextView , мы можем играть с ним. Итак, вот что вы можете сделать для достижения этого:

  Toast toast = Toast.makeText(this, "I am custom Toast!", Toast.LENGTH_LONG); View toastView = toast.getView(); //This'll return the default View of the Toast. /* And now you can get the TextView of the default View of the Toast. */ TextView toastMessage = (TextView) toastView.findViewById(android.R.id.message); toastMessage.setTextSize(25); toastMessage.setTextColor(Color.RED); toastMessage.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_fly, 0, 0, 0); toastMessage.setGravity(Gravity.CENTER); toastMessage.setCompoundDrawablePadding(16); toastView.setBackgroundColor(Color.CYAN); toast.show(); 

В приведенном выше коде вы можете добавить изображение в TextView через setCompoundDrawablesWithIntrinsicBounds(int left, int top, int right, int bottom) зависимости от позиции относительно TextView, которую вы хотите.

Вывод:

Введите описание изображения здесь

ШАГ 1:

Сначала создайте макет для пользовательского тоста в res / layout / custom_toast.xml:

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

ШАГ 2: В коде действия вы получите пользовательский вид и присоедините к Toast:

 // get your custom_toast.xml ayout LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.custom_toast, (ViewGroup) findViewById(R.id.custom_toast_layout_id)); // set a message TextView text = (TextView) layout.findViewById(R.id.text); text.setText("Button is clicked!"); // Toast... Toast toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show(); 

Для получения дополнительной информации см., Как мы создаем пользовательский Toast в Android:

http://developer.android.com/guide/topics/ui/notifiers/toasts.html

См. Ссылку здесь

Вы найдете свое решение

и попробовать

Создание пользовательского представления тоста

Если простого текстового сообщения недостаточно, вы можете создать индивидуальный макет для вашего тоста-уведомления. Чтобы создать пользовательский макет, определите макет вида в XML или код приложения и передайте корневой объект View в метод setView (View).

Например, вы можете создать макет для тоста, видимый на скриншоте справа, со следующим XML (сохраненным как toast_layout.xml):

  <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> 

Обратите внимание, что идентификатор элемента LinearLayout является «toast_layout». Вы должны использовать этот идентификатор для раздувания макета из XML, как показано здесь:

  LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.toast_layout, (ViewGroup) findViewById(R.id.toast_layout_root)); ImageView image = (ImageView) layout.findViewById(R.id.image); image.setImageResource(R.drawable.android); TextView text = (TextView) layout.findViewById(R.id.text); text.setText("Hello! This is a custom toast!"); Toast toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show(); 

Сначала извлеките LayoutInflater с помощью getLayoutInflater () (или getSystemService ()), а затем раздуйте макет из XML с помощью inflate (int, ViewGroup). Первым параметром является идентификатор ресурса макета, а второй – корневой вид. Вы можете использовать этот раздутый макет, чтобы найти больше объектов «Просмотр» в макете, поэтому теперь фиксируйте и определяйте контент для элементов ImageView и TextView. Наконец, создайте новый Toast с Toast (Context) и установите некоторые свойства тоста, такие как гравитация и продолжительность. Затем вызовите setView (Вид) и передайте ему раздутый макет. Теперь вы можете отображать тост с помощью настраиваемого макета, вызывая show ().

Примечание. Не используйте публичный конструктор для Toast, если вы не собираетесь определять макет с помощью setView (View). Если у вас нет настраиваемого макета, вы должны использовать makeText (Context, int, int) для создания Toast.

Я думаю, что большинство обычных xml-примеров из Интернета основаны на одном источнике. Андроидные документы, которые, на мой взгляд, очень устарели. Fill_parent больше не должен использоваться. Я предпочитаю использовать wrap_content в сочетании с xml.9.png. Таким образом вы можете определить минимальный размер toastbackground по всему размеру предоставленного источника.

Если требуются более сложные тосты, вместо LL следует использовать рамку или относительный макет.

toast.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/points_layout" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/background" android:layout_gravity="center" android:gravity="center" > <TextView android:id="@+id/points_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:layout_margin="15dp" android:text="@+string/points_text" android:textColor="@color/Green" /> </LinearLayout> 

background.xml

 <?xml version="1.0" encoding="utf-8"?> <nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/background_96" android:dither="true"/> 

Background_96 – background_96.9.png.

Это не очень хорошо проверено, подсказки оценили 🙂

Это то, что я использовал

AllMethodsInOne.java

 public static Toast displayCustomToast(FragmentActivity mAct, String toastText, String toastLength, String succTypeColor) { final Toast toast; if (toastLength.equals("short")) { toast = Toast.makeText(mAct, tText, Toast.LENGTH_SHORT); } else { toast = Toast.makeText(mAct, tText, Toast.LENGTH_LONG); } View tView = toast.getView(); tView.setBackgroundColor(Color.parseColor("#053a4d")); TextView mText = (TextView) tView.findViewById(android.R.id.message); mText.setTypeface(applyFont(mAct)); mText.setShadowLayer(0, 0, 0, 0); tView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { toast.cancel(); } }); tView.invalidate(); if (succTypeColor.equals("red")) { mText.setTextColor(Color.parseColor("#debe33")); tView.setBackground(mAct.getResources().getDrawable(R.drawable.toast_rounded_red)); // this is to show error message } if (succTypeColor.equals("green")) { mText.setTextColor(Color.parseColor("#053a4d")); tView.setBackground(mAct.getResources().getDrawable(R.drawable.toast_rounded_green)); // this is to show success message } return toast; } 

YourFile.java

При звонке просто напишите ниже.

 AllMethodsInOne.displayCustomToast(act, "This is custom toast", "long", "red").show(); 

Вы можете скачать код: здесь

Шаг 1:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <Button android:id="@+id/btnCustomToast" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Show Custom Toast" /> </RelativeLayout> 

Шаг 2:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/custom_toast_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher"/> <TextView android:id="@+id/custom_toast_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="My custom Toast Example Text" /> </LinearLayout> 

Шаг 3:

 import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Button btnCustomToast; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnCustomToast= (Button) findViewById(R.id.btnCustomToast); btnCustomToast.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Find custom toast example layout file View layoutValue = LayoutInflater.from(MainActivity.this).inflate(R.layout.android_custom_toast_example, null); //Creating the Toast object Toast toast = new Toast(getApplicationContext()); toast.setDuration(Toast.LENGTH_SHORT); // gravity, xOffset, yOffset toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setView(layoutValue);//setting the view of custom toast layout toast.show(); } }); } } 

Код для файла MainActivity.java.

 package com.android_examples.com.toastbackgroundcolorchange; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { Button BT; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); BT = (Button)findViewById(R.id.button1); BT.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast ToastMessage = Toast.makeText(getApplicationContext(),"Change Toast Background color",Toast.LENGTH_SHORT); View toastView = ToastMessage.getView(); toastView.setBackgroundResource(R.layout.toast_background_color); ToastMessage.show(); } }); } } 

Код для файла макета activity_main.xml.

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.android_examples.com.toastbackgroundcolorchange.MainActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="CLICK HERE TO SHOW TOAST MESSAGE WITH DIFFERENT BACKGROUND COLOR INCLUDING BORDER" /> </RelativeLayout> 

Код для файла компоновки toast_background_color.xml, созданного в папке res-> layout.

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <stroke android:width="3dp" android:color="#ffffff" ></stroke> <padding android:left="20dp" android:top="20dp" android:right="20dp" android:bottom="20dp" /> <corners android:radius="10dp" /> <gradient android:startColor="#ff000f" android:endColor="#ff0000" android:angle="-90"/> </shape> 
Intereting Posts
Отправка файла cookie с помощью http post android Уничтожьте элемент из адаптера ViewPager после изменения ориентации экрана Не удается сохранить ParseUser, который не аутентифицирован Раскрывающиеся окна для раскрутки на Twitter Facebook SDK 3 EOFException Как заблокировать / разблокировать экран с помощью режима Pattern / Password в Android? Как остановить заголовки на вкладках Android от обертывания в середине слова? Импорт данных из JSON или XML-канала и создание списка на Android Лучшая практика Java: вложенные геттеры? Или делегатов? Использовать настраиваемый плагин GStreamer на Android Включить режим полета на всех уровнях API программным способом Android FacebookSdk.sdkInitialize (getApplicationContext ()) Устарела Как реализовать событие Swipe для просмотра Flipper в ViewPager? Какие системные изображения следует установить для Android L Developement? Java.lang.SecurityException: ни пользователь 10032, ни текущий процесс не имеют android.permission.MODIFY_PHONE_STATE