如何禁用android Kotlin中的点按钮

时间:2017-11-13 19:41:23

标签: kotlin android-studio-3.0 kotlin-android-extensions

我是Android Studio的新手 - Kotlin,我正在使用带小数点的数字和数学运算符构建应用程序(.dot按钮)在我的数学计算器应用程序中,如果按下点按钮,则应禁用或不输入按钮第二次。如果多次按下,我想禁用或停止打印点按钮(。)。

这是我的代码

Acitivity.kt文件

package com.tripbegins.calculator
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import com.tripbegins.calculator.R.id.*
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

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

var emptyText = true
fun numberEvents(view: View) {
var checkButton:Boolean = false
    if(emptyText){
        viewResult.setText("")
    }
    emptyText = false

    var button = view as Button
    var isClicked = viewResult.text.toString()
    when (button.id) {
        buttonOne.id -> isClicked += "1"
        buttonTwo.id -> isClicked += "2"
        buttonThree.id -> isClicked += "3"
        dotButton.id-> isClicked+="."
    }

    viewResult.setText(isClicked)
}

var operation ="+"
var oldValues:String? = null
fun mathOperation(view: View){
    var mathButton = view as Button
    var isClicked = viewResult.text.toString()

    when(mathButton.id){
        plusButton.id-> {
            operation = "+"
        }
        minusButton.id->{
            operation="-"
        }
        mulButton.id->{
            operation="*"
        }

    }
    oldValues = viewResult.text.toString()
    emptyText = true
}

fun Calculate(view: View){

    var newValues = viewResult.text.toString()
    var calulateButton:Double? = null
    when(operation){
        "+"-> { calulateButton = oldValues!!.toDouble() + newValues.toDouble() }
        "-"-> { calulateButton = oldValues!!.toDouble() - newValues.toDouble() }
        "*"-> { calulateButton = oldValues!!.toDouble() * newValues.toDouble() }

    }
    viewResult.setText(calulateButton.toString())
    emptyText=true
}
fun clearFunction(view: View){
    viewResult.setText("")
}
}

activity.xml文件

 <?xml version="1.0" encoding="utf-8"?>
 <android.support.constraint.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="com.tripbegins.calculator.MainActivity">

<EditText
    android:id="@+id/viewResult"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="42dp"
    android:ems="10"
    android:gravity="bottom|right"
    android:inputType="textPersonName"
    android:text="0"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    android:id="@+id/buttonTwo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginTop="76dp"
    android:onClick="numberEvents"
    android:text="2"
    app:layout_constraintStart_toEndOf="@+id/buttonOne"
    app:layout_constraintTop_toBottomOf="@+id/viewResult" />

<Button
    android:id="@+id/plusButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="38dp"
    android:onClick="mathOperation"
    android:text="+"
    app:layout_constraintBaseline_toBaselineOf="@+id/minusButton"
    app:layout_constraintStart_toStartOf="parent" />

<Button
    android:id="@+id/minusButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="12dp"
    android:layout_marginTop="33dp"
    android:onClick="mathOperation"
    android:text="-"
    app:layout_constraintStart_toEndOf="@+id/plusButton"
    app:layout_constraintTop_toBottomOf="@+id/buttonTwo" />

<Button
    android:id="@+id/mulButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="26dp"
    android:onClick="mathOperation"
    android:text="*"
    app:layout_constraintBaseline_toBaselineOf="@+id/minusButton"
    app:layout_constraintStart_toEndOf="@+id/minusButton" />

<Button
    android:id="@+id/calButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="44dp"
    android:onClick="Calculate"
    android:text="Calculate"
    app:layout_constraintStart_toStartOf="@+id/minusButton"
    app:layout_constraintTop_toBottomOf="@+id/minusButton" />

<Button
    android:id="@+id/buttonThree"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="26dp"
    android:onClick="numberEvents"
    android:text="3"
    app:layout_constraintBaseline_toBaselineOf="@+id/buttonTwo"
    app:layout_constraintStart_toEndOf="@+id/buttonTwo" />

<Button
    android:id="@+id/buttonOne"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="34dp"
    android:onClick="numberEvents"
    android:text="1"
    app:layout_constraintBaseline_toBaselineOf="@+id/buttonTwo"
    app:layout_constraintStart_toStartOf="parent" />

<Button
    android:id="@+id/dotButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="22dp"
    android:onClick="numberEvents"
    android:text="."
    app:layout_constraintBaseline_toBaselineOf="@+id/calButton"
    app:layout_constraintEnd_toStartOf="@+id/calButton" />

<Button
    android:id="@+id/clearButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="11dp"
    android:onClick="clearFunction"
    android:text="Clear"
    app:layout_constraintBaseline_toBaselineOf="@+id/calButton"
    app:layout_constraintStart_toEndOf="@+id/calButton" />
    </android.support.constraint.ConstraintLayout>

我对结果的期望

有效输入 - &gt; 3.(不应再次输入.dot按钮)

无效条目 - &gt; 3 ...(目前我可以输入多个.dot按钮)

点按钮不应按两次。它应该只活动一次。

由于 穆罕默德

1 个答案:

答案 0 :(得分:4)

所以你想要在用户第一次点击它之后禁用名为dotButton的按钮:

要禁用按钮,请使用:

dotButton.isClickable=false

如果您希望按钮再次变为可点击(例如当用户删除他已经按下的点时),您可以使用:

dotButton.isClickable=true

修改: 修改你的活动代码:

when (button.id) {
        buttonOne.id -> isClicked += "1"
        buttonTwo.id -> isClicked += "2"
        buttonThree.id -> isClicked += "3"
        dotButton.id-> {
        isClicked+="."
        dotButton.isClickable=false//**add this line here**

                       }
    }

fun clearFunction(view: View){
    viewResult.setText("")
    dotButton.isClickable=true//**add this line here**
}