- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
对于之前在这个项目上帮助过我的人,非常感谢!我的代码不再有任何问题,并且我进行了额外的调整。现在该应用程序实际上已经很强大了,我想再做一件事。
请参阅 layout 的屏幕截图在这里。
通常,toast View 出现在屏幕的底部中央。一旦调用 OnClick,我想让它显示在提交按钮的正下方 (8dp)。我怎样才能做到这一点。
查看我的 updated complete project在这里。
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;
}
}
最佳答案
android.widget.Toast 定义了一组有用的方法,允许自定义 toast 通知的外观和感觉。您应该研究的方法是 setGravity(int, int, int) .使用 0 偏移量,下面的代码会将 toast 顶部锚定到所提供 View 的底部,并将 toast 中心锚定到 View 的中心。
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);
}
使用它需要在您的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();
关于android - 在 View 下方显示 toast 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21026786/
我正在使用matplotlib创建简单的线图。我的图是一个简单的时间序列数据集,其中我沿x轴有时间,而我在y轴上有测量的值。 y值可以具有正值或负值,如果y值> 0,则我想用蓝色填充行上方和下方的颜色
我有一个简单的菜单,当单击菜单项时,该菜单会滚动到某个部分。 例如: Contact 将滚动到: 但是我也有一个始终粘在顶部的菜单,并且该菜单的高度不是用滚动脚本计算的。因此菜单总是悬停在元素的顶部
我有一个 UISearchBar 和 UISearchDisplayController,一切都很好,但我的范围选择器显示在文本字段旁边而不是下方。我知道这是设备横向时的预期操作,但由于我在 UISp
因此,我正在创建一个根据用户输入增大和缩小的 ListView ,我需要四个按钮,但我不知道如何让按钮与 ListView 的底部对齐并位于2x2 网格时尚。我已经尝试过相对布局,但似乎不起作用。谢谢
我正在使用的系统无法直接编辑每个页面上的 HTML。我想添加特定页面正文的顶部,但我输入 HTML 的框会自动将脚本放置在上面 我尝试过这个: $('body').prepend(''); 任何帮
设计模式一切都很好,但在实时导航栏位于 ScrollView 下方我该如何解决这个问题?请帮忙 最佳答案 同样,在没有看到任何代码的情况下很难说,但我相信导航栏根本没有显示。如果您直接从另一个 Vie
我现在必须重用和修改其他人的代码来创建图像处理应用程序。以下代码用于设置框架及其 GUI。我遇到的问题是,当在菜单栏上单击文件字时,菜单项列在 originalImage 容器中包含的 Canvas
我创建了一个 Angular 指令,用户可以在其中根据一天中的时间更改某些设置。下面是我已有的图片: 我想在 div 的 x 轴上添加一种准确表示时间的“滴答”,以向用户显示他在做什么,如下图所示:
这是下面的代码。 body { font-family: "Lato", sans-serif; } .sidenav { width: 130px; positio
这个问题在这里已经有了答案: Z-Index not working? [closed] (1 个回答) 关闭 5 年前。
我搜索了这个并尝试了 Z 轴的东西,但无济于事。基本上,我的导航栏在其下方的 div 下方显示有子菜单。那个 div 发生了不透明的事情,这一定与它有关。我需要这些显示在 div 上方!! JS fi
我正在处理的网站的某些页面使用脚本自动创建基于页面标题的目录。但是,我在获取“toc”div 以将页面的其余内容推送到其下方时遇到了一些问题。 TOC div 在我页面的最里面的 div 中,“con
我的代码 http://jsfiddle.net/p796z/1/ HTML Content Content Content Content Content Content
请看下面的代码: Button dropdown
我有一个表格,我希望它直接位于 Logo 下方位于页面中间。到目前为止,我似乎做不到更有什者。任何帮助将不胜感激。谢谢。 这是 HTML 代码:
我的 web 应用程序在与 jQuery Mobile 和 cordova 的聊天部分出现问题。我决定用 textaera 和发送消息的按钮修复页脚。但是当我触摸文本区域写消息时,我的键盘没有出现。我
我有两个来回箭头,可以单击它们在我的单页网站上的框架中浏览照片。我的术语在这里可能不正确。保存照片和前后箭头的 div 出现在我的屏幕下方,而不是在屏幕场景 div 中。我可以将图像向上移动以出现在屏
我使用自定义 CSS 和 Bootstrap 类名称构建了这个 header 。我已经尝试了 z-index、float: initial 属性。提前致谢 .branding-preview {
我有两个部分介绍网站上的用例和好处。如下。 .onboardmessaging { min-width: 100%; } .onboardmessagingwrap { min-wi
所以,我在网站上发现了这个很酷的 css/html slider ,所以我下载了代码,并打算研究它。我已经开始根据自己的需要对其进行编辑和设计,然后我遇到了这个问题:当我添加比原始尺寸更大的图像时,导
我是一名优秀的程序员,十分优秀!