jjk*_*kim 6 eclipse sdk android toast
对于那些早些时候帮助过这个项目的人,非常感谢!我的代码不再有任何问题,我做了额外的调整.既然应用程序现在非常强大,我想再做一件事.
在此处查看布局的屏幕截图.
通常,吐司视图显示在屏幕的底部中央.一旦调用OnClick,我想让它显示在(8dp)提交按钮下方.我怎样才能做到这一点.
在这里查看我更新的完整项目.
package com.lookjohn.guessnumber;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
Random random;
Button button;
EditText text;
int input;
int MIN, MAX;
int comp;
int guesses;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
random = new Random();
button = (Button)findViewById(R.id.button1);
text = (EditText)findViewById(R.id.editText1);
MIN = 1;
MAX = 100;
comp = random.nextInt(MAX - MIN + 1) + MIN; // Generate random number between 1 and 100.
guesses = 0;
button.setOnClickListener(myhandler1);
}
View.OnClickListener myhandler1 = new View.OnClickListener() {
public void onClick(View v) {
// Implemented max number of guesses, detect
// number of guesses and return from the method.
String value = text.getText().toString(); // Get value from input from editTextView
// If user submits an empty EditText, return to prevent a crash.
if (value.isEmpty()) {
Toast.makeText(MainActivity.this, "You must enter a guess!", Toast.LENGTH_SHORT);
return;
}
input = Integer.parseInt(value); // Turn string into integer
guesses++;
if (input > 100) {
Toast.makeText(MainActivity.this,
"That number is greater than 100. Not Valid!",
Toast.LENGTH_SHORT).show();
return;
}
else if (input < comp)
Toast.makeText(MainActivity.this,
"Your number is too small.",
Toast.LENGTH_SHORT).show();
else if (input > comp)
Toast.makeText(MainActivity.this,
"Your number is too big.",
Toast.LENGTH_SHORT).show();
else
Toast.makeText(MainActivity.this,
"Good job! The answer was " + comp + ".\n" +
"You made " + guesses + " guesses.\n" +
"Restart the app to try again.",
Toast.LENGTH_LONG).show();
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
Mak*_*kov 14
android.widget.Toast定义了一堆有用的方法,允许自定义Toast通知的外观.您应该研究的方法是setGravity(int,int,int).如果下面有0个偏移代码,则将吐司顶部固定在所提供视图的底部,并将吐司中心固定到视图的中心.
public static void positionToast(Toast toast, View view, Window window, int offsetX, int offsetY) {
// toasts are positioned relatively to decor view, views relatively to their parents, we have to gather additional data to have a common coordinate system
Rect rect = new Rect();
window.getDecorView().getWindowVisibleDisplayFrame(rect);
// covert anchor view absolute position to a position which is relative to decor view
int[] viewLocation = new int[2];
view.getLocationInWindow(viewLocation);
int viewLeft = viewLocation[0] - rect.left;
int viewTop = viewLocation[1] - rect.top;
// measure toast to center it relatively to the anchor view
DisplayMetrics metrics = new DisplayMetrics();
window.getWindowManager().getDefaultDisplay().getMetrics(metrics);
int widthMeasureSpec = MeasureSpec.makeMeasureSpec(metrics.widthPixels, MeasureSpec.UNSPECIFIED);
int heightMeasureSpec = MeasureSpec.makeMeasureSpec(metrics.heightPixels, MeasureSpec.UNSPECIFIED);
toast.getView().measure(widthMeasureSpec, heightMeasureSpec);
int toastWidth = toast.getView().getMeasuredWidth();
// compute toast offsets
int toastX = viewLeft + (view.getWidth() - toastWidth) / 2 + offsetX;
int toastY = viewTop + view.getHeight() + offsetY;
toast.setGravity(Gravity.LEFT | Gravity.TOP, toastX, toastY);
}
Run Code Online (Sandbox Code Playgroud)
使用它将需要在onClick方法中修改与toast相关的行:
int offsetY = getResources().getDimensionPixelSize(R.dimen.toast_offset_y);
Toast toast = Toast.makeText(MainActivity.this, "That number is greater than 100. Not Valid!", Toast.LENGTH_SHORT);
positionToast(toast, v, getWindow(), 0, offsetY);
toast.show();
Run Code Online (Sandbox Code Playgroud)
根据我了解到的情况,这是我为该程序想出的最好方案。执行此操作会将 Toast 消息置于手机中央。
if(input > 100) {
Toast toast = Toast.makeText(MainActivity.this,
R.string.over_guess,
Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
return;
}
else if(input < comp) {
Toast toast = Toast.makeText(MainActivity.this,
getString(R.string.guess_low, input),
Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
else if(input > comp) {
Toast toast = Toast.makeText(MainActivity.this,
getString(R.string.guess_high, input),
Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
else {
Toast toast = Toast.makeText(MainActivity.this,
getString(R.string.correct, comp, guesses),
Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
Run Code Online (Sandbox Code Playgroud)