You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现3个EditText求和至另一EditText,并根据结果设置背景色?

Android 实现EditText内容求和并根据结果设置背景色

嘿,这个需求实现起来其实挺简单的,我给你拆解下具体步骤和代码示例,保证能搞定~

核心实现思路

  • 先获取三个输入框的内容,一定要处理空值或者非数字的情况,不然容易崩溃
  • 将输入内容转为数字后求和
  • 根据求和结果设置目标输入框的背景色和显示内容
  • 推荐用按钮触发求和操作,当然也可以监听输入框文本变化实时更新,不过按钮触发更稳妥

布局文件示例

首先你需要在布局里定义四个EditText和一个触发按钮,给每个控件设置好ID:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <EditText
        android:id="@+id/et1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入数字1"
        android:inputType="numberDecimal"/>

    <EditText
        android:id="@+id/et2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入数字2"
        android:inputType="numberDecimal"/>

    <EditText
        android:id="@+id/et3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入数字3"
        android:inputType="numberDecimal"/>

    <Button
        android:id="@+id/btnCalculate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="计算求和"
        android:layout_marginVertical="16dp"/>

    <EditText
        android:id="@+id/et33"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="求和结果"
        android:enabled="false"/> <!-- 设为不可编辑,只用来展示结果 -->
</LinearLayout>

Java 代码实现

如果你的项目用Java开发,直接把下面的代码放到你的Activity里就行:

import android.graphics.Color;
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 et1, et2, et3, et33;
    private Button btnCalculate;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 绑定布局里的控件
        et1 = findViewById(R.id.et1);
        et2 = findViewById(R.id.et2);
        et3 = findViewById(R.id.et3);
        et33 = findViewById(R.id.et33);
        btnCalculate = findViewById(R.id.btnCalculate);

        // 给按钮设置点击事件,点击时执行求和逻辑
        btnCalculate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                calculateSum();
            }
        });
    }

    private void calculateSum() {
        // 获取输入内容,空内容默认转为0
        String text1 = et1.getText().toString().trim();
        String text2 = et2.getText().toString().trim();
        String text3 = et3.getText().toString().trim();

        double num1 = text1.isEmpty() ? 0 : Double.parseDouble(text1);
        double num2 = text2.isEmpty() ? 0 : Double.parseDouble(text2);
        double num3 = text3.isEmpty() ? 0 : Double.parseDouble(text3);

        // 计算求和
        double sum = num1 + num2 + num3;

        // 显示结果到et33
        et33.setText(String.valueOf(sum));

        // 根据结果设置背景色
        if (sum == 18) {
            et33.setBackgroundColor(Color.GREEN);
        } else {
            et33.setBackgroundColor(Color.RED);
        }
    }
}

Kotlin 代码实现

如果是Kotlin项目,代码会更简洁:

import android.graphics.Color
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    private lateinit var et1: EditText
    private lateinit var et2: EditText
    private lateinit var et3: EditText
    private lateinit var et33: EditText
    private lateinit var btnCalculate: Button

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

        // 绑定控件
        et1 = findViewById(R.id.et1)
        et2 = findViewById(R.id.et2)
        et3 = findViewById(R.id.et3)
        et33 = findViewById(R.id.et33)
        btnCalculate = findViewById(R.id.btnCalculate)

        // 按钮点击触发求和
        btnCalculate.setOnClickListener { calculateSum() }
    }

    private fun calculateSum() {
        // 安全转换数字,空或非数字内容默认转为0.0
        val num1 = et1.text.toString().trim().toDoubleOrNull() ?: 0.0
        val num2 = et2.text.toString().trim().toDoubleOrNull() ?: 0.0
        val num3 = et3.text.toString().trim().toDoubleOrNull() ?: 0.0

        val sum = num1 + num2 + num3

        // 显示结果
        et33.setText(sum.toString())

        // 根据结果切换背景色
        et33.setBackgroundColor(if (sum == 18.0) Color.GREEN else Color.RED)
    }
}

几个关键注意点

  • 空值/非数字处理:如果用户没输入内容,或者输入了非数字字符,直接转数字会抛出异常,所以一定要做判断(Java里的空值判断、Kotlin里的toDoubleOrNull())
  • 输入类型限制:给输入框设置android:inputType="numberDecimal",可以限制用户只能输入数字,减少异常情况
  • 结果框不可编辑:把et33设为android:enabled="false",避免用户修改结果,只做展示用
  • 整数求和适配:如果只需要整数求和,把代码里的Double改成Int就行,比如Java用Integer.parseInt(),Kotlin用toIntOrNull()

内容的提问来源于stack exchange,提问作者alz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:29:59