2015-09-15 4 views
1

Я могу получить каждое (по умолчанию) сообщение тоста, но я хочу добавить к нему значок приложения. Как я могу получить позицию из представления/визажиста?Android get toast position

Мой тост catcher - это AccessibilityService, и я надеялся, что у AccessibilityEvent есть что-то полезное, но я не нашел недвижимость с необходимыми данными.

Редактировать: CyanogenMod добавил его, и я хочу его внедрить в Android android с моим приложением.

Example toast

+0

вам нужна точка тоста или вы хотите добавить к ней значок? –

+0

Поскольку тост из другого приложения, мне не разрешено редактировать тост. Моя идея состояла в том, чтобы наложить значок приложения и из-за этого мне нужна позиция. Есть ли другой способ? – mars3142

+0

извините, но я не уверен, что получил его, поэтому вы хотите скрыть тост, наложив его на другой вид, не так ли? –

ответ

0

Вы можете изменить положение Toast сообщения

setGravity(int gravity, int xOffset, int yOffset) 

Как вы знаете свою позицию Toast сообщения вы можете просто установить ваше положение значка соответственно doc

+1

тост не в его приложении, поэтому он может 't получить к нему доступ с setGravity: S –

0

Может ли вы попробовать Выборочные тост?

Снимок экрана прилагается для того же.

enter image description here

custom_toast_view.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/toastParent" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#F08080" 
    android:gravity="center_vertical" 
    android:orientation="horizontal" 
    android:padding="10dp" > 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="30dp" 
     android:layout_height="30dp" 
     android:layout_marginRight="10dp" 
     android:contentDescription="@string/app_name" /> 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="#FFF" /> 

</LinearLayout> 

В Java класс:

private void displayToast(){ 
    LayoutInflater inflater = getLayoutInflater(); 
    View layout = inflater.inflate(R.layout.custom_toast_view, (ViewGroup) findViewById(R.id.toastParent)); 
    ImageView image = (ImageView) layout.findViewById(R.id.image); 
    image.setImageResource(R.drawable.ic_launcher); 
    TextView text = (TextView) layout.findViewById(R.id.text); 
    text.setText("Hello! This is a custom toast!"); 
    Toast toast = new Toast(getApplicationContext()); 
    toast.setDuration(Toast.LENGTH_LONG); 
    toast.setView(layout); 
    toast.show(); 
} 

Надеется, что это поможет.

+0

Мое приложение (https://play.google.com/store/apps/details?id=org.mars3142.android.toaster) поймает каждый тост. Таким образом, я не могу использовать пользовательские макеты. Я не хочу отключать оригинальный тост и показывать пользовательский номер – mars3142

0

С помощью следующего кода вы можете получить по умолчанию Toast Y смещение от нижней части экрана:

int i = Resources.getSystem().getIdentifier("toast_y_offset", "dimen", "android"); 
int bottomOffset = getResources().getDimensionPixelSize(i); 

Тогда просто поместить изображение в нижней части экрана с нижним отступом == bottomOffset.

Ответ на «где я могу получить левое положение?»:

Toast использует Android: layout_gravity = «center_horizontal» для выравнивания текста и по умолчанию размера текста. Таким образом, вы можете рассчитать, сколько места займет этот текст (если вы знаете, какой именно текст будет): Calculating width of a string on Android. Затем левое смещение можно рассчитать как (screenWidth - textWidth)/2.

+0

И где я могу получить левую позицию? – mars3142

+0

ответил в отредактированной версии. – birdy

+0

Это может быть единственный возможный способ (ручной расчет), если я не могу прочитать данные из других источников. – mars3142