片段中有一个EditText。用户应在此处输入数字(输入格式为数字)。但是有一个问题:editText中什么都没有显示。用户可以输入,但看不到数字。怎么了?
片段Xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CalculatorFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/calculator_text"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp" />
<EditText
android:layout_width="match_parent"
android:layout_height="20dp"
android:id="@+id/weight"
android:layout_below="@+id/text"
android:layout_marginTop="20dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:hint="@string/weight"
android:inputType="number"/>
<EditText
android:layout_width="match_parent"
android:layout_height="20dp"
android:id="@+id/height"
android:layout_below="@+id/weight"
android:layout_marginTop="20dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:hint="@string/height"
android:inputType="number"/>
<Button
android:id="@+id/count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@id/height"
android:layout_marginTop="30dp"
android:text="@string/count"
android:onClick="onClick"/>
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/count"
android:layout_marginTop="20dp"/>
</RelativeLayout>
片段代码:
package asus.example.com.fitnessapp;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
/**
* A simple {@link Fragment} subclass.
*/
public class CalculatorFragment extends Fragment implements View.OnClickListener {
TextView textView;
EditText eWeight, eHeight;
int nWeight, nHeight;
public CalculatorFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_calculator, container, false);
Button button = v.findViewById(R.id.count);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
eWeight = v.findViewById(R.id.weight);
eHeight = v.findViewById(R.id.height);
nWeight = Integer.parseInt(eWeight.getText().toString());
nHeight = Integer.parseInt(eHeight.getText().toString());
if (nWeight-nHeight<100) {
textView.setText("Normal weight");
}
}
});
return v;
}
}
更新
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
实际上,我认为模拟器会导致此问题,因为当我输入数字时,我可以更改光标的位置,这就是为什么这里有东西。但未显示。但是,与此同时,当我尝试从此editText解析int信息时,由于这里没有内容,因此会导致错误。
答案 0 :(得分:0)
我已经测试了您提供的代码,但布局存在问题。只需将以下行添加到您的EditText xml块中:android:layout_height="wrap_content"
,而不是将其硬固定到20dp
,这对于EditText字段而言,这不是一个合适的高度尺寸。
根据Google Android开发者的建议,EditText的最小高度应为50dp
。因此,您也可以考虑也将EditText的高度更改为50dp
而不是"wrap_content"
因此,修改后的xml如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CalculatorFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/calculator_text"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/weight"
android:layout_below="@+id/text"
android:layout_marginTop="20dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:hint="@string/weight"
android:inputType="number"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/height"
android:layout_below="@+id/weight"
android:layout_marginTop="20dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:hint="@string/height"
android:inputType="number"/>
<Button
android:id="@+id/count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@id/height"
android:layout_marginTop="30dp"
android:text="@string/count"
android:onClick="onClick"/>
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/count"
android:layout_marginTop="20dp"/>
</RelativeLayout>