내 질문은 특히 이미 생성 된 토스트의 새로 고침과 관련되어 있습니다. 예를 들어토스트가 이미 표시되어있는 경우 토스트 위치가 업데이트되지 않습니다.
내가 생성 된 토스트가 :
Toast myToast;
// ...
protected void onCreate(Bundle savedInstanceState) {
// ...
myToast = Toast.makeText(getApplicationContext(), "Welcome", Toast.LENGTH_SHORT);
을 그리고 난 두 가지 작업에 따라 다르게 업데이트 :
if (answerGiven != correctAnswer) {
myToast.setText("Wrong");
View view = myToast.getView();
TextView text = (TextView) view.findViewById(android.R.id.message);
text.setTextColor(Color.RED);
text.setTextSize(32);
myToast.setGravity(Gravity.CENTER, 0, 0);
} else {
View view = myToast.getView();
TextView text = (TextView) view.findViewById(android.R.id.message);
text.setTextColor(Color.BLACK);
text.setTextSize(32);
myToast.setText("+" + bonus);
myToast.setGravity(Gravity.TOP|Gravity.RIGHT, 20, 20);
}
myToast.show();
작업을 모두 잘 작동! 하지만 화면에서 빠르게 탭하고 두 번째 동작을 활성화하면 토스트가 사라지기 전에 메시지가 업데이트 되더라도 중력이 변경되지 않습니다.
예를 들어: 내가 틀린 답을 선택하고 "잘못된"메시지가 화면의 중앙에 표시하는 경우 :
을하고 난 즉시 보너스 메시지가 나타납니다 쓰기 대답을 선택 화면 중간
(주 (내가 그것을 말할지라도은 setGravity(Gravity.TOP|Gravity.RIGHT, 20, 20);
를 설정) : 난 후 "잘못된"메시지가 사라질 때까지 기다릴 경우 카릭 k 보너스 메시지가 예상대로 왼쪽 상단 모서리에 표시된 정답)
내가 원하는 것은 보너스 메시지를 항상 왼쪽 상단에 놓는 것입니다. 사용자가 클릭하여 금식하는 경우에도. 그래서 나는 묻습니다 : 새로운 메시지가 정확한 위치에 표시되도록 이전 토스트를 취소 할 수있는 방법이 있습니까? 또는 메시지를 올바른 위치에 표시 할 수 있도록 (예 : 활동을 새로 고치는 등)해야 할 일이 있습니다.
예, 완벽하게 작동합니다! – JFreeman
도움이 된 것을 기쁘게 생각합니다 :) 행복한 코딩 –