android - 如何准确地在按钮上显示 toast

标签 android xml toast

我有各种 XML 布局。在所有这些布局中,我都有按钮,但按钮的位置在每个布局中都不同。在我的 Activity 中,这些布局会随机膨胀(任何布局都可以出现在前台)。由于所有 XML 布局的内容都相同,因此它们有一个共同点,那就是按钮的 ID。在每个 xml 文件中,按钮只有 (android:layout_marginTop="145sp"和 android:layout_marginBottom="45sp") 不同。

因此,如果名为“ALI”的按钮显示在特定的角落,下一次相同的按钮“ALI”可能会显示在屏幕的另一个角落。

现在在我的 Activity 中,我想要它以便每当我单击按钮时,它的相关图像应该以 Toast 的形式准确显示在按钮上。

但是由于按钮的位置不固定,我无法在按钮上准确显示Toast。无论按钮位置如何,我得到的 Toast 的位置都是固定的。但我希望它直接显示在按钮上。

我使用了以下代码。如果有任何方法可以在运行时告诉 OnClickListener 按钮的像素位置,那么它会有点方便。

点击按钮事件代码如下:

button_ALI.setOnClickListener(new View.OnClickListener() {          

        public void onClick(View v) {
            // TODO Auto-generated method stub
            Toast toast = Toast.makeText(getApplicationContext(),"This is Bat", Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.CENTER, 0, 0);
            LinearLayout toastView = (LinearLayout) toast.getView();
            ImageView imageCodeProject = new ImageView(getApplicationContext());
            imageCodeProject.setImageResource(R.drawable.b_1);
            toastView.addView(imageCodeProject, 0);
            toast.show();
        }
    });

最佳答案

toast.setGravity(Gravity.RIGHT |Gravity.TOP, view.getLeft(), view.getTop()+(view.getBottom()-view.getTop())/2);

它应该工作

关于android - 如何准确地在按钮上显示 toast ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6355388/

相关文章:

android - 将 Cookie 从 HttpURLConnection (java.net.CookieManager) 传递到 WebView (android.webkit.CookieManager)

.net - System.Xml.Linq.XDocument' 在未引用的程序集中定义

java - 使用 Jackson XML 绑定(bind)将列表映射到 Pojo

xml - 获取具有 "name"属性的 XML 元素的标记名称

java - 安卓 : sms receiver is not working

android - 如何在android中用新的数据库文件替换现有的sqlite数据库文件

android - 在 Debug模式下在 flutter 上显示特定的小部件

Android Toast 显示之前的 Activity

android - 为什么安卓:requestLegacyExternalStorage ="true" not working in Android 10 - API 29

android - Toast.makeText(...).show() 有时会错位