在EditText中输入符号

时间:2018-10-14 16:01:26

标签: java android android-fragments

片段中有一个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信息时,由于这里没有内容,因此会导致错误。

1 个答案:

答案 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>