2

我想在我的应用程序的任何文本视图中将我的 toast 消息设置在顶部|左侧位置,所以我使用了这段代码

public class CustomToast extends Activity {

TextView mTextView1;
TextView mTextView2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.custom_toast);
      mTextView1=(TextView)findViewById(R.id.textView);
      mTextView2=(TextView)findViewById(R.id.textView2);
    mTextView1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showCustomAlert( );
        }
    });
    mTextView2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showCustomAlert( );
        }
    });
}
public void showCustomAlert( )
{

    Context context = getApplicationContext();
    // Create layout inflator object to inflate toast.xml file
    LayoutInflater inflater = getLayoutInflater();

    // Call toast.xml file for toast layout
    View toastRoot = inflater.inflate(R.layout.toast, null);

    Toast toast = new Toast(context);

    // Set layout to toast
    toast.setView(toastRoot);
    toast.setGravity(Gravity.TOP|Gravity.LEFT ,0, 0);
    toast.setDuration(2000);
    toast.show();

  }
}

当我运行上面的代码时,toast 每次都显示在屏幕顶部,而不是特别是 textview 见下图。

最初是两个文本视图屏幕

在此处输入图像描述

当我点击第二个文本视图时,我得到了这个吐司位置

在此处输入图像描述

知道如何解决这个问题吗?

4

2 回答 2

1

您需要做的就是根据 textview 在屏幕上的位置管理 Toast 位置。然后您需要每次将视图的坐标动态添加到您的 Toast。因此您需要使用以下方法获取单击的视图的坐标:

buttonView.getLocationOnScreen(location);

然后设置Toast的位置:

toast.setGravity(Gravity.TOP|Gravity.LEFT,buttonView.getRight()+5, 
location[1]-10);

以上仅供参考。更清晰和描述性的想法请参见ThisThis

于 2015-10-22T05:33:24.983 回答
0

使用下面的代码:

Toast toast= Toast.makeText(getApplicationContext(), 
"Your string here", Toast.LENGTH_SHORT);  
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
toast.show();
于 2015-10-22T05:32:28.680 回答