Как изменить положение тостов в Android?
когда я использую Toast
для отображения всплывающего текста на экране, он отображает текст немного выше нижней части экрана, которая находится в положении по умолчанию.
теперь я хочу, чтобы отобразить его в середину экрана или где-то по моему выбору.
может ли кто-нибудь направить меня, как этого достичь?
8 ответов:
С документация,
позиционирование тост
стандартное всплывающее уведомление появляется в нижней части экрана, по центру горизонтально. Вы можете изменить это положение с помощью
setGravity(int, int, int)
метод. Это принимает три параметра:Gravity
константа, anx-position
смещение, иy-position
смещение.например, если вы решили, что тост должен появиться в верхний левый угол, вы можете установите гравитацию следующим образом:
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
если вы хотите сдвинуть вправо, увеличьте значение второй аргумент. Чтобы подтолкнуть его вниз, увеличьте значение последнего параметр.
в стороне, если вы получаете сообщение об ошибке, указывающее, что вы должны вызвать makeText, следующий код заставляет его работать:
Toast toast= Toast.makeText(getApplicationContext(), "Your string here", Toast.LENGTH_SHORT); toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0); toast.show();
вы можете настроить местоположение вашего тоста с помощью:
setGravity(int gravity, int xOffset, int yOffset)
Это позволяет вам быть очень конкретным о том, где вы хотите расположение вашего тоста, чтобы быть.
например, если вы хотите сделать пользовательский тост, который появляется в верхней части кнопки, вы можете создать такую функцию:
// 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();
приведенный выше код поможет вам отобразить тост в середине экрана или в соответствии с выбором ура для этого просто установите гравитацию тоста в соответствии с потребностями ура
Примечание: Для этого процесса u должны использовать объект Toast
Toast toast = Toast.makeText(test.this,"bbb", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.show();
установка тостов на экране topin
toast.setView(view); toast.setGravity(Gravity.BOTTOM , 0, 0); // here i am setting toast at bottom toast.setDuration(Toast.LENGTH_LONG); toast.show();
теперь на дно!--3-->
toast.setView(view); toast.setGravity(Gravity.BOTTOM , 0, 0); // here i am setting toast at bottom toast.setDuration(Toast.LENGTH_LONG); toast.show();
таким же образом мы можем установить тост слева, справа, а также в центре
клик здесь
метод изменения цвета, положения и цвета фона тостов:
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();
для построчного объяснения:https://www.youtube.com/watch?v=5bzhGd1HZOc
/ / пользовательский класс тостов, где вы можете показать пользовательский или стандартный тост по желанию)
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(); } }