How to Create Android Calculator Application
Published February 16, 2020In this post we are going to learn how to build mobile app from scratch, we are going to build a simple android calculator application with Kotlin support
Let's Start
Step 1: Create New Android Project
- Open Android Studio
- Go to file menu
- Select new
- Enter project name
- Enter activity name
- Keep other default settings
- Select Language Kotlin
- Click on finish button to create a new android project
Step 2: Add Required Dependencies in app level build.gradle file
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
implementation 'androidx.core:core-ktx:1.3.0-alpha01'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
Step 3: Updated all resourses files
colors.xml
<resources>
<color name="colorPrimary">#EC9109</color>
<color name="colorPrimaryDark">#F50959</color>
<color name="colorAccent">#9C27B0</color>
<color name="colorWhite">#ffffff</color>
<color name="colorBlack">#000000</color>
<color name="colorAsh">#bbb</color>
<color name="colorBg">#272927</color>
</resources>
|
style.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="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>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
<style name="stylish">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">60dp</item>
<item name="android:layout_weight">1</item>
<item name="android:gravity">center</item>
<item name="android:textColor">@android:color/white</item>
<item name="android:textSize">30sp</item>
<item name="android:fontFamily">@font/font_family_ptsans</item>
<item name="android:background">?attr/selectableItemBackground</item>
</style>
<style name="arithmetic_keys" parent="stylish">
<item name="android:textColor">@android:color/holo_red_light</item>
</style>
<style name="foto_vertical_views">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">60dp</item>
<item name="android:layout_weight">0.01</item>
<item name="android:background">@android:color/black</item>
</style>
<style name="CalculatorTextView">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">0dp</item>
<item name="android:gravity">center</item>
<item name="android:textSize">30sp</item>
<item name="android:fontFamily">@font/font_family_ptsans</item>
<item name="android:background">?attr/selectableItemBackground</item>
</style>
|
Step 4: Now Update MainActivity.kt and xml file with below code
MainActivity.kt
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.content.Intent
import android.os.Handler
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val handler = Handler()
handler.postDelayed({
val intent = Intent(this@MainActivity, CalculatorActivity::class.java)
startActivity(intent)
finish()
}, 2000)
}
}
|
activity_main.xml
<FrameLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/colorBg"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical"
android:gravity="center"
android:padding="20dp"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:contentDescription="@string/app_name"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Simple Calculator"
android:textColor="@color/colorPrimary"
android:layout_marginTop="10dp"
android:textSize="14sp"/>
</LinearLayout>
</FrameLayout>
|
Step 5: Create new Activity CalculatorActivity.kt and update below code
CalculatorActivity.kt
import android.content.pm.ActivityInfo
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.method.TextKeyListener.clear
import android.util.Log
import android.view.View
import android.view.Window
import android.view.WindowManager
import androidx.appcompat.app.ActionBar
import kotlinx.android.synthetic.main.activity_calculator.*
import org.mariuszgromada.math.mxparser.Expression
class CalculatorActivity : AppCompatActivity() {
private val TAG = CalculatorActivity::class.java!!.getSimpleName()
private val text = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_calculator)
result_tv.setText("0");
key_seven.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (containsLastLetter("%"))
keys_pressed_tv.setText(keys_pressed_tv.getText().toString()+ "x7");
else
keys_pressed_tv.setText(keys_pressed_tv.getText().toString()+ "7");
carryOutCalculation();
}
})
key_percentage.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (!keys_pressed_tv.getText().toString().toString().equals("")) {
if (!containsLastLetter("%"))
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "%");
carryOutCalculation();
}
}})
key_close_bracket.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (!keys_pressed_tv.getText().toString().toString().equals("")) {
if (!containsLastLetter(")") || !containsLastLetter("("))
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + ")");
carryOutCalculation();
}
}})
key_open_bracket.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (keys_pressed_tv.getText().toString().toString().equals("")) {
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "(");
return;
}
if (!containsLastLetter("+") && !containsLastLetter("-") &&
!containsLastLetter("x") && !containsLastLetter("÷")) {
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "x(");
return;
}
if (!containsLastLetter("(")) {
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "(");
return;
}
}})
key_divide_operation.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (!keys_pressed_tv.getText().toString().toString().equals("")) {
if (!containsLastLetter("÷"))
operatorClicked("÷");
}
}})
key_eight.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (containsLastLetter("%"))
keys_pressed_tv.setText(keys_pressed_tv.getText().toString()+ "x8");
else
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "8");
carryOutCalculation();
}})
key_nine.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (containsLastLetter("%"))
keys_pressed_tv.setText(keys_pressed_tv.getText().toString()+ "x9");
else
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "9");
carryOutCalculation();
}})
key_multiply_operation.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (!keys_pressed_tv.getText().toString().toString().equals("")) {
if (!containsLastLetter("x"))
operatorClicked("x");
}
}})
key_four.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (containsLastLetter("%"))
keys_pressed_tv.setText(keys_pressed_tv.getText().toString()+ "x4");
else
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "4");
carryOutCalculation();
}})
key_five.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (containsLastLetter("%"))
keys_pressed_tv.setText(keys_pressed_tv.getText().toString()+ "x5");
else
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "5");
carryOutCalculation();
}})
key_six.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (containsLastLetter("%"))
keys_pressed_tv.setText(keys_pressed_tv.getText().toString()+ "x6");
else
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "6");
carryOutCalculation();
}})
key_subtract_operation.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (keys_pressed_tv.getText().toString().toString().equals("")) {
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "-");
return;
}
if (!containsLastLetter("-"))
operatorClicked("-");
}})
key_one.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (containsLastLetter("%"))
keys_pressed_tv.setText(keys_pressed_tv.getText().toString()+ "x1");
else
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "1");
carryOutCalculation();
}})
key_two.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (containsLastLetter("%"))
keys_pressed_tv.setText(keys_pressed_tv.getText().toString()+ "x2");
else
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "2");
carryOutCalculation();
}})
key_three.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (containsLastLetter("%"))
keys_pressed_tv.setText(keys_pressed_tv.getText().toString()+ "x3");
else
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "3");
carryOutCalculation();
}})
key_addition_operation.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (!keys_pressed_tv.getText().toString().toString().equals("")) {
if (!containsLastLetter("+"))
operatorClicked("+");
}
}})
key_zero.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + "0");
carryOutCalculation();
}})
key_delete.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
deleteKeyClicked();
}})
key_dot.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
if (!keys_pressed_tv.getText().toString().equals("")) {
if (!containsLastLetter(".")) {
keys_pressed_tv.setText(keys_pressed_tv.getText().toString() + ".");
}
}
}})
clear_tv.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
keys_pressed_tv.setText("");
result_tv.setText("0");
key_delete.setVisibility(View.VISIBLE);
clear_tv.setVisibility(View.INVISIBLE);
}})
key_submission_operation.setOnClickListener(object:View.OnClickListener{
override fun onClick(v: View?) {
carryOutCalculation();
clear_tv.setVisibility(View.VISIBLE);
key_delete.setVisibility(View.INVISIBLE);
}})
}
fun operatorClicked( operator:String) {
if (clear_tv.getVisibility() == View.VISIBLE && result_tv.getText().toString().toString() != "Error") {
keys_pressed_tv.setText(result_tv.getText().toString().toString() + operator);
key_delete.setVisibility(View.VISIBLE);
clear_tv.setVisibility(View.GONE);
} else
keys_pressed_tv.setText(keys_pressed_tv.getText().toString().toString() + operator);
}
fun containsLastLetter( letter :String):Boolean {
var text = keys_pressed_tv.getText().toString().toString();
var last = "";
if(text.length != 0)
last = text.substring(text.length - 1);
return last.equals(letter);
}
fun deleteKeyClicked() {
var text = keys_pressed_tv.getText().toString().toString();
if (text.length > 0) {
var newText = text.substring(0, text.length - 1);
if (newText.equals("-")) {
newText = "";
}
keys_pressed_tv.setText(newText);
if (!newText.isEmpty()) {
var last = newText.substring(newText.length - 1);
} else {
result_tv.setText("0");
}
}
}
fun carryOutCalculation() {
var expression = keys_pressed_tv.text.toString();
if (expression.contains("x")) {
expression = expression.replace("x", "*");
}
if (expression.contains("÷")) {
expression = expression.replace("÷", "/");
}
if (expression.contains("(") && !expression.substring(expression.lastIndexOf("("), expression.length).contains(")")) {
expression += ")";
}
Log.d(TAG, expression);
//Carry out the calculation
var e1 = Expression(expression);
var answer = (e1.calculate()).toString();
//Format Error
if (answer.equals("NaN"))
answer = "Error";
result_tv.setText(answer);
}
}
|
activity_calculator.xml
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<View
android:id="@+id/view"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/colorBg"
app:layout_constraintBottom_toTopOf="@+id/scrollView2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/result_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="8dp"
android:layout_weight="2"
android:fontFamily="@font/font_family_ptsans"
android:gravity="end|center"
android:maxLines="1"
android:padding="8dp"
android:textColor="@color/colorWhite"
android:textSize="60sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toggle_nav"
tools:text="0" />
<TextView
android:id="@+id/keys_pressed_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:fontFamily="@font/font_family_ptsans"
android:gravity="end|center"
android:maxLines="1"
android:padding="8dp"
android:textColor="@color/colorWhite"
android:textSize="40sp"
android:scrollHorizontally="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/result_tv"
tools:text="0" />
<ScrollView
android:id="@+id/scrollView2"
android:layout_width="0dp"
android:layout_height="0dp"
android:fillViewport="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/keys_pressed_tv">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.25" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.75" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.20" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.40" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.60" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.80" />
<TextView
android:id="@+id/key_percentage"
style="@style/CalculatorTextView"
android:text="%"
app:layout_constraintBottom_toTopOf="@+id/guideline4"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/key_open_bracket"
style="@style/CalculatorTextView"
android:text="("
app:layout_constraintBottom_toTopOf="@+id/guideline4"
app:layout_constraintEnd_toStartOf="@+id/guideline2"
app:layout_constraintStart_toStartOf="@+id/guideline"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/key_close_bracket"
style="@style/CalculatorTextView"
android:text=")"
app:layout_constraintBottom_toTopOf="@+id/guideline4"
app:layout_constraintEnd_toStartOf="@+id/guideline3"
app:layout_constraintStart_toStartOf="@+id/guideline2"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/key_divide_operation"
style="@style/CalculatorTextView"
android:text="÷"
app:layout_constraintBottom_toTopOf="@+id/guideline4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/guideline3"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/key_seven"
style="@style/CalculatorTextView"
android:text="7"
app:layout_constraintBottom_toTopOf="@+id/guideline5"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline4" />
<TextView
android:id="@+id/key_eight"
style="@style/CalculatorTextView"
android:text="8"
app:layout_constraintBottom_toTopOf="@+id/guideline5"
app:layout_constraintEnd_toStartOf="@+id/guideline2"
app:layout_constraintStart_toStartOf="@+id/guideline"
app:layout_constraintTop_toTopOf="@+id/guideline4" />
<TextView
android:id="@+id/key_nine"
style="@style/CalculatorTextView"
android:text="9"
app:layout_constraintBottom_toTopOf="@+id/guideline5"
app:layout_constraintEnd_toStartOf="@+id/guideline3"
app:layout_constraintStart_toStartOf="@+id/guideline2"
app:layout_constraintTop_toTopOf="@+id/guideline4" />
<TextView
android:id="@+id/key_multiply_operation"
style="@style/CalculatorTextView"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="x"
app:layout_constraintBottom_toTopOf="@+id/guideline5"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/guideline3"
app:layout_constraintTop_toTopOf="@+id/guideline4" />
<TextView
android:id="@+id/key_four"
style="@style/CalculatorTextView"
android:text="4"
app:layout_constraintBottom_toTopOf="@+id/guideline6"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline5" />
<TextView
android:id="@+id/key_five"
style="@style/CalculatorTextView"
android:text="5"
app:layout_constraintBottom_toTopOf="@+id/guideline6"
app:layout_constraintEnd_toStartOf="@+id/guideline2"
app:layout_constraintStart_toStartOf="@+id/guideline"
app:layout_constraintTop_toTopOf="@+id/guideline5" />
<TextView
android:id="@+id/key_six"
style="@style/CalculatorTextView"
android:text="6"
app:layout_constraintBottom_toTopOf="@+id/guideline6"
app:layout_constraintEnd_toStartOf="@+id/guideline3"
app:layout_constraintStart_toStartOf="@+id/guideline2"
app:layout_constraintTop_toTopOf="@+id/guideline5" />
<TextView
android:id="@+id/key_subtract_operation"
style="@style/CalculatorTextView"
android:text="-"
app:layout_constraintBottom_toTopOf="@+id/guideline6"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/guideline3"
app:layout_constraintTop_toTopOf="@+id/guideline5" />
<TextView
android:id="@+id/key_one"
style="@style/CalculatorTextView"
android:text="1"
app:layout_constraintBottom_toTopOf="@+id/guideline7"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline6" />
<TextView
android:id="@+id/key_two"
style="@style/CalculatorTextView"
android:text="2"
app:layout_constraintBottom_toTopOf="@+id/guideline7"
app:layout_constraintEnd_toStartOf="@+id/guideline2"
app:layout_constraintStart_toStartOf="@+id/guideline"
app:layout_constraintTop_toTopOf="@+id/guideline6" />
<TextView
android:id="@+id/key_three"
style="@style/CalculatorTextView"
android:text="3"
app:layout_constraintBottom_toTopOf="@+id/guideline7"
app:layout_constraintEnd_toStartOf="@+id/guideline3"
app:layout_constraintStart_toStartOf="@+id/guideline2"
app:layout_constraintTop_toTopOf="@+id/guideline6" />
<TextView
android:id="@+id/key_addition_operation"
style="@style/CalculatorTextView"
android:text="+"
app:layout_constraintBottom_toTopOf="@+id/guideline7"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/guideline3"
app:layout_constraintTop_toTopOf="@+id/guideline6" />
<TextView
android:id="@+id/key_zero"
style="@style/CalculatorTextView"
android:text="0"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline7" />
<TextView
android:id="@+id/key_dot"
style="@style/CalculatorTextView"
android:text="."
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/guideline2"
app:layout_constraintStart_toStartOf="@+id/guideline"
app:layout_constraintTop_toTopOf="@+id/guideline7" />
<TextView
android:id="@+id/key_submission_operation"
style="@style/CalculatorTextView"
android:text="="
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/guideline3"
app:layout_constraintTop_toTopOf="@+id/guideline7" />
<TextView
android:id="@+id/key_delete"
style="@style/CalculatorTextView"
android:text="?"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/key_submission_operation"
app:layout_constraintStart_toStartOf="@+id/guideline2"
app:layout_constraintTop_toBottomOf="@+id/key_three" />
<TextView
android:id="@+id/clear_tv"
style="@style/CalculatorTextView"
android:text="CLS"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/guideline3"
app:layout_constraintStart_toStartOf="@+id/key_delete"
app:layout_constraintTop_toTopOf="@+id/key_delete" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_begin="20dp" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="20dp" />
<ImageView
android:id="@+id/toggle_nav"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:src="@android:drawable/ic_menu_more"
app:layout_constraintStart_toStartOf="@+id/guideline8"
app:layout_constraintTop_toTopOf="@+id/guideline9" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_end="20dp" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:src="@android:drawable/ic_media_play"
app:layout_constraintEnd_toStartOf="@+id/guideline10"
app:layout_constraintTop_toTopOf="@+id/guideline9" />
</androidx.constraintlayout.widget.ConstraintLayout>
|
Article Contributed By :
|
|
|
|
1196 Views |