首页 > 解决方案 > 科学计算器中用户输入的数学表达式

问题描述

我想让 android 科学计算器将用户输入显示为像教科书格式一样的数学表达式。例如,当单击分数按钮时,会出现一个分子和分母框供用户输入。请帮我一把。

标签: android

解决方案


我希望这可以让您提前开始我已经为对话框创建了一个 xml,其中包含您输入分数的提名者和分母的框,她在下面

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <LinearLayout
        android:layout_marginTop="10dp"
        android:id="@+id/fractionLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <EditText
            android:id="@+id/nominator"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:background="@drawable/round_white"
            android:textAlignment="center" />

        <View
            android:layout_width="70dp"
            android:layout_height="1dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginRight="5dp"
            android:background="@color/black" />

        <EditText
            android:id="@+id/denominator"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginRight="5dp"
            android:background="@drawable/round_white"
            android:textAlignment="center" />
    </LinearLayout>

    <Button
        android:id="@+id/ok"
        android:layout_width="60dp"
        android:layout_height="50dp"
        android:layout_below="@+id/fractionLayout"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:text="Ok" />


</RelativeLayout>

然后还有一个带有分数按钮的xml,在这个xml中我创建了一个onClick =“fraction”,这是一个在主要活动中实现的方法,用于处理按钮点击,但无论如何你都可以这样做觉得舒服。

    <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageButton
        android:id="@+id/fraction"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_gravity="center"
        android:background="@drawable/fraction"
        android:elevation="4dp"
        android:onClick="fraction" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

为了让 EditTexts 看起来有点可爱,这只是对我来说,你也可以按照你想要的方式来做,我制作了一个 drawble xml,我将它设置为 Edittexts 背景,这里是

    <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="10dp"
    android:shape="rectangle">
    <solid android:color="@android:color/white" /> <!-- this one is ths color of the Rounded Button -->
    <corners android:radius="20dp" />
    <stroke
        android:width="2dp"
        android:color="@android:color/holo_blue_light" />
</shape>

现在为 Activity 部分处理功能继承代码,注意这是很好的注释,你可以很容易地理解它

import android.app.Dialog
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.Toast

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

    }

    //onclick fucntion created from the XML
    fun fraction(view: View) {
        //create a dialog to call the fraction input boxes
        val fraction = Dialog(this)
        fraction.setContentView(R.layout.trial)


        // find the fraction boxes
        val nominator = fraction.findViewById<EditText>(R.id.nominator)
        val denominator = fraction.findViewById<EditText>(R.id.denominator)
        val okBtn = fraction.findViewById<Button>(R.id.ok)

        //get the text entered from the fraction boxes
        val nom = nominator.text
        val den = denominator.text

        okBtn.setOnClickListener {
            //dismiss the fraction dialog
            fraction.dismiss()

            //show th values entered in the boxes
            Toast.makeText(this, "${nom}/${den}", Toast.LENGTH_LONG).show()
        }

        fraction.show()
    }
}

这应该让您了解如何使用您的应用程序。谢谢


推荐阅读