我正在尝试遵循一个在Android Studio中构建非常基本的计算器的教程。像这里的很多人一样,我一直努力尝试使用按钮在EditText对象中添加小数点。
我已经阅读了有关类似问题的许多问题的答案。但是,它们似乎都不起作用。我尝试修复的代码如下。如果有人可以看一眼,也许我发现了我看不到的东西,我将非常感激。
Xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/newNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:focusable="false"
android:focusableInTouchMode="false"
android:inputType="numberDecimal|numberSigned"
[I have also tried adding this -> android:digits="0123456789.,"]
tools:layout_editor_absoluteX="201dp"
tools:layout_editor_absoluteY="8dp" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="48dp"
android:text="1"
tools:layout_editor_absoluteX="212dp"
tools:layout_editor_absoluteY="79dp" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="48dp"
android:text="2"
app:layout_constraintBaseline_toBaselineOf="@+id/button1"
app:layout_constraintStart_toEndOf="@+id/button1" />
<Button
android:id="@+id/buttonDot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="48dp"
android:text="."
app:layout_constraintStart_toEndOf="@+id/button2"
app:layout_constraintTop_toTopOf="@+id/button2" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.example.calculator;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private EditText newNumber;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newNumber = (EditText) findViewById(R.id.newNumber);
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
Button buttonDot = (Button) findViewById(R.id.buttonDot);
// Instantiate listener
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Button b = (Button) v;
newNumber.append(b.getText().toString());
}
};
button1.setOnClickListener(listener);
button2.setOnClickListener(listener);
buttonDot.setOnClickListener(listener);
}
}
非常感谢!
答案 0 :(得分:2)
android:inputType="numberSigned"
用于接受十进制输入,因此从0到9的所有数字(包括小数点符号(。))只能是输入值。而且效果很好。我不知道逗号出现在图片中的位置。尝试使用TextView.setRawInputType()对应于android:inputType
属性。