在任何textview android中设置Toast gravity左上角

时间:2015-10-22 05:25:48

标签: android gravity android-toast android-gravity

我想在我的应用程序的任何文本视图中的top | left位置设置我的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();

  }
}

当我运行上面的代码时,每次特别是textview时,toast显示在屏幕顶部,请参阅下面的图片。

最初是两个文本视图屏幕

enter image description here

当我点击第二 textview时,我得到了这个吐司位置

enter image description here

知道如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您需要做的就是根据屏幕上textview的位置管理Toast位置。然后每次需要动态添加视图坐标到Toast.So你需要获取视图的坐标。点击使用:

buttonView.getLocationOnScreen(location);

然后设置Toast的位置:

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

上述内容仅供参考。如需更清晰,更具描述性的提示,请参阅ThisThis

答案 1 :(得分:0)

使用以下代码:

Toast toast= Toast.makeText(getApplicationContext(), 
"Your string here", Toast.LENGTH_SHORT);  
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
toast.show();