我能够获取每个(默认)Toast消息,但我想添加应用程序图标。如何从吐司视图/小部件中获取位置?
我的吐司捕手是AccessibilityService
,我希望AccessibilityEvent
有一些有用的东西,但我找不到包含所需数据的属性。
编辑:CyanogenMod添加了它,我想用我的应用程序将它实现到股票android。
答案 0 :(得分:0)
您可以更改Toast Message的位置
setGravity(int gravity, int xOffset, int yOffset)
如果你知道你的Toast留言位置,你只需相应地设置你的图标位置doc
答案 1 :(得分:0)
您可以尝试自定义吐司吗?
随附的屏幕截图。
<强> 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();
}
希望这会对你有所帮助。
答案 2 :(得分:0)
使用以下代码,您可以从屏幕底部获取默认Toast Y偏移量:
int i = Resources.getSystem().getIdentifier("toast_y_offset", "dimen", "android");
int bottomOffset = getResources().getDimensionPixelSize(i);
然后只需将图片放在屏幕底部,底部填充== bottomOffset
。
回答&#34;我从哪里获得左侧位置?&#34;:
Toast使用android:layout_gravity =&#34; center_horizontal&#34;对齐文本和默认文本大小。因此,您可以计算此文本将占用多少空间(如果您知道确切的文本是什么):Calculating width of a string on Android。然后左偏移可以计算为(screenWidth - textWidth) / 2
。