Ich bin neu in der Android-Programmierung. Was ist ein einfaches Beispiel für eine benutzerdefinierte Toastbenachrichtigung unter Android?
Ich bin neu in der Android-Programmierung. Was ist ein einfaches Beispiel für eine benutzerdefinierte Toastbenachrichtigung unter Android?
Antworten:
Verwenden Sie den folgenden Code eines benutzerdefinierten Toasts. Es kann Ihnen helfen.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toast_layout_root"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:background="#DAAA" >
<ImageView android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginRight="10dp" />
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textColor="#FFF" />
</LinearLayout>
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();
Schauen Sie sich auch die folgenden Links an, um einen benutzerdefinierten Toast zu erhalten.
Kundenspezifischer Toast mit analoger Uhr
YouTube: Erstellen eines benutzerdefinierten Toasts mit der Schaltfläche in Android Studio
Ein Toast dient zum Anzeigen von Nachrichten für kurze Zeitintervalle. Nach meinem Verständnis möchten Sie es also anpassen, indem Sie ein Bild hinzufügen und Größe und Farbe des Nachrichtentextes ändern. Wenn das alles ist, was Sie tun möchten, müssen Sie kein separates Layout erstellen und es auf die Toast-Instanz aufblasen.
Die Standardansicht von Toast enthält eine TextView
zum Anzeigen von Nachrichten. Wenn wir also die Ressourcen-ID-Referenz dafür haben, TextView
können wir damit spielen. Was können Sie tun, um dies zu erreichen:
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();
Im obigen Code können Sie TextView über die gewünschte setCompoundDrawablesWithIntrinsicBounds(int left, int top, int right, int bottom)
Position relativ zu TextView ein Bild hinzufügen .
Aktualisieren:
Haben eine Builder-Klasse geschrieben, um den oben genannten Zweck zu vereinfachen; Hier ist der Link: https://gist.github.com/TheLittleNaruto/6fc8f6a2b0d0583a240bd78313ba83bc
Überprüfen Sie den HowToUse.kt
obigen Link.
Ausgabe:
TextView
sein sollte, nur um sicher zu gehen, und mit einem Scheck meine ich einen Nullscheck oder einen Typprüfung. Für alle Fälle beschließt Google, die ID oder Ansicht für die Anzeige von Text in der Toast-Klasse zu ändern. Wie auch immer ... +1
SCHRITT 1:
Erstellen Sie zunächst ein Layout für einen benutzerdefinierten Toast in 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>
SCHRITT 2: Rufen Sie im Aktivitätscode die obige benutzerdefinierte Ansicht auf und hängen Sie sie an Toast an:
// 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();
Weitere Hilfe finden Sie unter Erstellen eines benutzerdefinierten Toasts in Android:
http://developer.android.com/guide/topics/ui/notifiers/toasts.html
Siehe Link hier . Sie finden Ihre Lösung. Und versuche:
Erstellen einer benutzerdefinierten Toastansicht
Wenn eine einfache Textnachricht nicht ausreicht, können Sie ein benutzerdefiniertes Layout für Ihre Toastbenachrichtigung erstellen. Um ein benutzerdefiniertes Layout zu erstellen, definieren Sie ein Ansichtslayout in XML oder in Ihrem Anwendungscode und übergeben Sie das Root-View-Objekt an die setView (View) -Methode.
Beispielsweise können Sie das im Screenshot rechts sichtbare Layout für den Toast mit der folgenden XML-Datei erstellen (gespeichert als 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>
Beachten Sie, dass die ID des LinearLayout-Elements "toast_layout" lautet. Sie müssen diese ID verwenden, um das Layout aus dem XML aufzublähen, wie hier gezeigt:
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();
Rufen Sie zuerst den LayoutInflater mit getLayoutInflater () (oder getSystemService ()) ab und blasen Sie dann das Layout mit inflate (int, ViewGroup) aus XML auf. Der erste Parameter ist die Layout-Ressourcen-ID und der zweite die Stammansicht. Mit diesem aufgeblasenen Layout können Sie weitere Ansichtsobjekte im Layout finden. Erfassen und definieren Sie nun den Inhalt für die ImageView- und TextView-Elemente. Erstellen Sie abschließend einen neuen Toast mit Toast (Kontext) und legen Sie einige Eigenschaften des Toasts fest, z. B. die Schwerkraft und die Dauer. Rufen Sie dann setView (View) auf und übergeben Sie das aufgeblasene Layout. Sie können den Toast jetzt mit Ihrem benutzerdefinierten Layout anzeigen, indem Sie show () aufrufen.
Hinweis: Verwenden Sie den öffentlichen Konstruktor nicht für einen Toast, es sei denn, Sie definieren das Layout mit setView (View). Wenn Sie kein benutzerdefiniertes Layout verwenden können, müssen Sie makeText (Context, int, int) verwenden, um den Toast zu erstellen.
Benutzerdefiniertes Layout für Toast , custom_toast.xml
:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Custom Toast"
android:gravity="center"
android:id="@+id/custom_toast_text"
android:typeface="serif"
android:textStyle="bold"
/>
</LinearLayout>
Und die Java-Methode (übergeben Sie einfach eine Toastnachricht an diese Methode):
public void toast(String message)
{
Toast toast = new Toast(context);
View view = LayoutInflater.from(context).inflate(R.layout.image_custom, null);
TextView textView = (TextView) view.findViewById(R.id.custom_toast_text);
textView.setText(message);
toast.setView(view);
toast.setGravity(Gravity.BOTTOM|Gravity.CENTER, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
}
Sie können den Code hier herunterladen .
Schritt 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>
Schritt 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>
Schritt 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();
}
});
}
}
Ich denke, die meisten Customtoast-XML-Beispiele im Internet basieren auf derselben Quelle.
Die Android-Dokumentation, die meiner Meinung nach sehr veraltet ist. fill_parent sollte nicht mehr verwendet werden. Ich bevorzuge die Verwendung von wrap_content in Kombination mit einem xml.9.png. Auf diese Weise können Sie die Mindestgröße von Toastbackground über die Größe der bereitgestellten Quelle definieren.
Wenn komplexere Toasts erforderlich sind, sollte anstelle von LL ein Rahmen oder ein relatives Layout verwendet werden.
<?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>
<?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 ist background_96.9.png.
Dies ist nicht sehr gut getestet und Hinweise sind willkommen :)
Um zu vermeiden, dass Probleme mit layout_ * -Parametern nicht ordnungsgemäß verwendet werden, müssen Sie beim Aufblasen Ihres benutzerdefinierten Layouts sicherstellen, dass Sie eine korrekte ViewGroup als übergeordnetes Element angeben.
Viele Beispiele übergeben hier null, aber stattdessen können Sie die vorhandene Toast ViewGroup als übergeordnetes Element übergeben.
val toast = Toast.makeText(this, "", Toast.LENGTH_LONG)
val layout = LayoutInflater.from(this).inflate(R.layout.view_custom_toast, toast.view.parent as? ViewGroup?)
toast.view = layout
toast.show()
Hier ersetzen wir die vorhandene Toast-Ansicht durch unsere benutzerdefinierte Ansicht. Sobald Sie einen Verweis auf Ihr Layout "Layout" haben, können Sie alle darin enthaltenen Bilder / Textansichten aktualisieren.
Diese Lösung verhindert auch, dass Abstürze "Ansicht nicht an Fenstermanager angehängt" null als übergeordnetes Element verwenden.
Vermeiden Sie außerdem die Verwendung von ConstraintLayout als benutzerdefiniertes Layout-Stammverzeichnis. Dies scheint nicht zu funktionieren, wenn es in einem Toast verwendet wird.
Das habe ich benutzt
public static Toast displayCustomToast(FragmentActivity mAct, String toastText, String toastLength, String succTypeColor) {
final Toast toast;
if (toastLength.equals("short")) {
toast = Toast.makeText(mAct, toastText, Toast.LENGTH_SHORT);
} else {
toast = Toast.makeText(mAct, toastText, 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;
}
Während Sie anrufen, schreiben Sie einfach unten.
AllMethodsInOne.displayCustomToast(act, "This is custom toast", "long", "red").show();
Code für die Datei 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();
}
});
}
}
Code für die Layoutdatei 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>
Code für die Layoutdatei toast_background_color.xml, die im Ordner res-> layout erstellt wurde.
<?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>
// Eine benutzerdefinierte Toastklasse, in der Sie nach Bedarf benutzerdefinierten oder Standard-Toast anzeigen können.)
public class ToastMessage {
private Context context;
private static ToastMessage instance;
/**
* @param context
*/
private ToastMessage(Context context) {
this.context = context;
}
/**
* @param context
* @return
*/
public synchronized static ToastMessage getInstance(Context context) {
if (instance == null) {
instance = new ToastMessage(context);
}
return instance;
}
/**
* @param message
*/
public void showLongMessage(String message) {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
/**
* @param message
*/
public void showSmallMessage(String message) {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
/**
* The Toast displayed via this method will display it for short period of time
*
* @param message
*/
public void showLongCustomToast(String message) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
View layout = inflater.inflate(R.layout.layout_custom_toast, (ViewGroup) ((Activity) context).findViewById(R.id.ll_toast));
TextView msgTv = (TextView) layout.findViewById(R.id.tv_msg);
msgTv.setText(message);
Toast toast = new Toast(context);
toast.setGravity(Gravity.FILL_HORIZONTAL | Gravity.BOTTOM, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
/**
* The toast displayed by this class will display it for long period of time
*
* @param message
*/
public void showSmallCustomToast(String message) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
View layout = inflater.inflate(R.layout.layout_custom_toast, (ViewGroup) ((Activity) context).findViewById(R.id.ll_toast));
TextView msgTv = (TextView) layout.findViewById(R.id.tv_msg);
msgTv.setText(message);
Toast toast = new Toast(context);
toast.setGravity(Gravity.FILL_HORIZONTAL | Gravity.BOTTOM, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(layout);
toast.show();
}
}
Einfache Möglichkeit, den Toast anzupassen,
private void MsgDisplay(String Msg, int Size, int Grav){
Toast toast = Toast.makeText(this, Msg, Toast.LENGTH_LONG);
TextView v = (TextView) toast.getView().findViewById(android.R.id.message);
v.setTextColor(Color.rgb(241, 196, 15));
v.setTextSize(Size);
v.setGravity(Gravity.CENTER);
v.setShadowLayer(1.5f, -1, 1, Color.BLACK);
if(Grav == 1){
toast.setGravity(Gravity.BOTTOM, 0, 120);
}else{
toast.setGravity(Gravity.BOTTOM, 0, 10);
}
toast.show();
}
Für alle Kotlin-Benutzer
Sie können eine Erweiterung wie folgt erstellen:
fun FragmentActivity.showCustomToast(message : String,color : Int) {
val toastView = findViewById<TextView>(R.id.toast_view)
toastView.text = message
toastView.visibility = View.VISIBLE
toastView.setBackgroundColor(color)
// create a daemon thread
val timer = Timer("schedule", true)
// schedule a single event
timer.schedule(2000) {
runOnUiThread { toastView.visibility = View.GONE }
}
}
Es ist sehr einfach, unsere eigenen Gewohnheiten zu erstellen Toast
.
Befolgen Sie einfach die folgenden Schritte.
Schritt 1
Erstellen Sie das gewünschte benutzerdefinierte Layout
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/black"
android:orientation="vertical"
android:padding="@dimen/size_10dp"
app:cardCornerRadius="@dimen/size_8dp"
app:cardElevation="@dimen/size_8dp">
<TextView
android:id="@+id/txt_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/size_12dp"
android:textAlignment="center"
android:textColor="@color/white"
android:textSize="@dimen/text_size_16sp"
tools:text="Hello Test!!" />
</androidx.cardview.widget.CardView>
Schritt 2
Erstellen Sie nun die benutzerdefinierte Klasse, die mit erweitert wird Toast
.
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.shop.shoppinggare.R;
import org.apache.commons.lang3.StringUtils;
import org.w3c.dom.Text;
public class CustomToast extends Toast {
private Context context;
private String message;
public CustomToast(Context context, String message) {
super(context);
this.context = context;
this.message = message;
View view = LayoutInflater.from(context).inflate(R.layout.toast_custom, null);
TextView txtMsg = view.findViewById(R.id.txt_message);
txtMsg.setText(StringUtils.capitalize(message));
setView(view);
setDuration(Toast.LENGTH_LONG);
}
}
Wir haben den benutzerdefinierten Toast erstellt.
Schritt 3
Nun endlich, wie können wir es nutzen.
new CustomToast(contex,"message").show();
Genießen!!
Benutzerdefinierte Toasts aus dem Hintergrund werden blockiert. Android 11 schützt Benutzer, indem benutzerdefinierte Toastansichten abgelehnt werden. Aus Sicherheitsgründen und um eine gute Benutzererfahrung zu gewährleisten, blockiert das System Toasts, die benutzerdefinierte Ansichten enthalten, wenn diese Toasts von einer App für Android 11 aus dem Hintergrund gesendet werden.
addCallback () -Methode in Android R hinzugefügt Wenn Sie benachrichtigt werden möchten, wenn ein Toast (Text oder benutzerdefiniert) angezeigt wird oder verschwindet.
Der wichtigste Text in der Toast-API ändert, dass für Apps, die auf Android 11 abzielen, die getView()
Methode null zurückgibt, wenn Sie darauf zugreifen. Stellen Sie also sicher, dass Sie Ihre Apps vor FATAL EXCEPTION schützen. Sie wissen, was ich meine :)
Wenn Sie diese Bibliothek mit dem Namen Toasty verwenden , haben Sie meiner Meinung nach genügend Flexibilität, um einen benutzerdefinierten Toast mit dem folgenden Ansatz zu erstellen :
Toasty.custom(yourContext, "I'm a custom Toast", yourIconDrawable, tintColor, duration, withIcon,
shouldTint).show();
Sie können auch formatierten Text an Toasty übergeben. Hier ist das Code-Snippet
val inflater = layoutInflater
val container: ViewGroup = findViewById(R.id.custom_toast_container)
val layout: ViewGroup = inflater.inflate(R.layout.custom_toast, container)
val text: TextView = layout.findViewById(R.id.text)
text.text = "This is a custom toast"
with (Toast(applicationContext)) {
setGravity(Gravity.CENTER_VERTICAL, 0, 0)
duration = Toast.LENGTH_LONG
view = layout
show()
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/custom_toast_container"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="8dp"
android:background="#DAAA"
>
<ImageView android:src="@drawable/droid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8dp"
/>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFF"
/>
</LinearLayout>
Referenz: https://developer.android.com/guide/topics/ui/notifiers/toasts