Yanıtlar:
Gönderen belgeler ,
Tostunuzu Konumlandırma
Ekranın alt kısmında, yatay olarak ortalanmış standart bir tost bildirimi görünür. Bu konumu
setGravity(int, int, int)
yöntemle değiştirebilirsiniz. Bu üç parametreyi kabul eder:Gravity
sabit,x-position
ofset vey-position
ofset.Örneğin, tostun sol üst köşede görünmesi gerektiğine karar verirseniz, yerçekimini şu şekilde ayarlayabilirsiniz:
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
Konumu sağa sürüklemek istiyorsanız, ikinci parametrenin değerini artırın. Aşağı itmek için son parametrenin değerini artırın.
Gravity.CENTER_VERTICAL
olanı gösterebilir, ancak tostu ekranın ortasına koyacaktır.
MakeText'i aramanız gerektiğini belirten bir hata alırsanız, aşağıdaki kod sorunu düzeltir:
Toast toast= Toast.makeText(getApplicationContext(),
"Your string here", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
new Toast(context)
yerine böyle kullanırsanız hata oluşurToast.makeText(...)
Tostunuzun konumunu aşağıdakileri kullanarak özelleştirebilirsiniz:
setGravity(int gravity, int xOffset, int yOffset)
Bu, Tost yerinizin nerede olmasını istediğiniz konusunda çok spesifik olmanızı sağlar.
XOffset ve yOffset parametreleri hakkında en kullanışlı şeylerden biri, Tost'u belirli bir Görünüme göre yerleştirmek için bunları kullanabilmenizdir.
Örneğin, bir Düğmenin üstünde görünen özel bir Tost yapmak istiyorsanız, aşağıdaki gibi bir işlev oluşturabilirsiniz:
// v is the Button view that you want the Toast to appear above
// and messageId is the id of your string resource for the message
private void displayToastAboveButton(View v, int messageId)
{
int xOffset = 0;
int yOffset = 0;
Rect gvr = new Rect();
View parent = (View) v.getParent();
int parentHeight = parent.getHeight();
if (v.getGlobalVisibleRect(gvr))
{
View root = v.getRootView();
int halfWidth = root.getRight() / 2;
int halfHeight = root.getBottom() / 2;
int parentCenterX = ((gvr.right - gvr.left) / 2) + gvr.left;
int parentCenterY = ((gvr.bottom - gvr.top) / 2) + gvr.top;
if (parentCenterY <= halfHeight)
{
yOffset = -(halfHeight - parentCenterY) - parentHeight;
}
else
{
yOffset = (parentCenterY - halfHeight) - parentHeight;
}
if (parentCenterX < halfWidth)
{
xOffset = -(halfWidth - parentCenterX);
}
if (parentCenterX >= halfWidth)
{
xOffset = parentCenterX - halfWidth;
}
}
Toast toast = Toast.makeText(getActivity(), messageId, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, xOffset, yOffset);
toast.show();
}
Toast mytoast= Toast.makeText(getApplicationContext(), "Toast Message", 1);
mytoast.setGravity(Gravity.CENTER_HORIZONTAL, 0, 0); // for center horizontal
//mytoast.setGravity(Gravity.CENTER_VERTICAL); // for center vertical
//mytoast.setGravity(Gravity.TOP); // for top
mytoast.show();
Yukarıdaki kod, ekranın ortasında veya sizin seçiminize göre tostu göstermenize yardımcı olacaktır, bunun için tost gravitesini ihtiyacınıza göre ayarlayın
Not: Bu işlem için Toast nesnesini kullanmanız gerekir
Tostun rengini, konumunu ve arka plan rengini değiştirme yöntemi:
Toast toast=Toast.makeText(getApplicationContext(),"This is advanced toast",Toast.LENGTH_LONG);
toast.setGravity(Gravity.BOTTOM | Gravity.RIGHT,0,0);
View view=toast.getView();
TextView view1=(TextView)view.findViewById(android.R.id.message);
view1.setTextColor(Color.YELLOW);
view.setBackgroundResource(R.color.colorPrimary);
toast.show();
Satır satır açıklama için: https://www.youtube.com/watch?v=5bzhGd1HZOc
tostu üst ekranda ayarlama
toast.setView(view);
toast.setGravity(Gravity.BOTTOM , 0, 0); // here i am setting toast at bottom
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
şimdi altta
toast.setView(view);
toast.setGravity(Gravity.BOTTOM , 0, 0); // here i am setting toast at bottom
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
aynı şekilde sola, sağa ve ortada tost ayarlayabiliriz
Click burada
// Özel veya varsayılan tostu istediğiniz gibi gösterebileceğiniz özel bir tost sınıfı)
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();
}
}