提问人:codec123 提问时间:9/20/2023 最后编辑:C.F.Gcodec123 更新时间:9/22/2023 访问量:49
如何使用 11 个按钮获取计时器的输入
How to take input for timer with 11 buttons
问:
我是android开发的新手。我正在尝试制作一个计时器应用程序。我的 UI 有 11 个 0-9 按钮、一个 00 按钮和一个退格按钮。我的文本视图的初始格式将类似于“00h 00m 00s”。当用户键入输入(如“123”)时,文本视图应从右向左更改,例如“00h 01m 23s”。我不知道该怎么做。 它应该像谷歌时钟应用程序一样接受输入 GOOGLE 时钟应用
请用JAVA编写清晰的代码。
我尝试对 h 、m 和 s 使用三个 textview。我使用 SpannableStringBuilder 来减小 h 、m 和 s 的大小。 我原以为它会替换文本视图中的零,但它正在删除它并写入新数字。简而言之,我搞砸了。
答:
0赞
C.F.G
9/20/2023
#1
第一种方法:
尝试使用 Strings 功能(我还没有测试过):
String formattedSecond = second + Html.fromHtml("<sub><small>" + s + "</small></sub>")
secondTextView.setText(formattedSecond);
第二种方法:
您可以在右(端)底部添加一个额外的对齐方式,每个较小的尺寸都在 .TextView
TextView
RelativeLayout
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/aa"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="12"
android:gravity="center"
android:textSize="50sp"/>
<TextView
android:id="@+id/bb"
android:layout_width="24dp"
android:layout_height="24dp"
android:text="S"
android:gravity="center"
android:textSize="20sp"
android:layout_alignBottom="@id/aa"
android:layout_alignEnd="@id/aa" />
</RelativeLayout>
评论
0赞
codec123
9/21/2023
我的问题是用户输入的数字应该替换零,然后从右向左移动。它最初只显示 00,然后消失
0赞
Reilas
9/22/2023
#2
'...当用户键入输入(如“123”)时,文本视图应从右向左更改,例如“00h 01m 23s”。我不知道该怎么做。它应该像谷歌时钟应用程序谷歌时钟应用程序一样输入......”
利用类结构将值解析为小时、分钟和秒。
import static java.lang.Integer.parseInt;
class Time {
String string = "";
int h, m, s;
Time() { }
Time(String s) { append(s); }
void append(String s) {
string += s;
parse();
}
private void parse() {
int n = string.length();
if (n < 3) s = parseInt(string);
else {
if (n <= 4) m = parseInt(string.substring(0, n - 2));
else {
h = parseInt(string.substring(0, n - 4));
m = parseInt(string.substring(n - 4, n - 2));
}
s = parseInt(string.substring(n - 2));
}
}
@Override
public String toString() {
return "%02dh %02dm %02ds".formatted(h, m, s);
}
}
String s = "12345";
System.out.println(new Time(s));
输出
01h 23m 45s
下面是追加值的示例。
Time t = new Time();
for (int i = 1; i < 10; i++) {
t.append(String.valueOf(i));
System.out.println(t);
}
输出
00h 00m 01s
00h 00m 12s
00h 01m 23s
00h 12m 34s
01h 23m 45s
12h 34m 56s
123h 45m 67s
1234h 56m 78s
12345h 67m 89s
评论
1赞
codec123
9/23/2023
非常感谢你帮助一个菜鸟。必须尝试一下。
评论