diff --git a/app/src/main/java/com/example/bondoman/views/activities/MainActivity.kt b/app/src/main/java/com/example/bondoman/views/activities/MainActivity.kt
index e75968f806a649d082f25083b2df061d72b2db53..2e0ef1127a59c145ed703fa0360ad8f42eb9a946 100644
--- a/app/src/main/java/com/example/bondoman/views/activities/MainActivity.kt
+++ b/app/src/main/java/com/example/bondoman/views/activities/MainActivity.kt
@@ -91,19 +91,32 @@ class MainActivity : AppCompatActivity(), ParentActivityService {
 		headerText.text = text
 	}
 
-	override fun showDialog(view: View) {
+	override fun showDialog(
+		view: View,
+		rootView: ViewGroup,
+		elevation: Float,
+	) {
+		configureDialogBehavior(rootView)
+
 		dialogParent.removeAllViews()
 		dialogParent.isClickable = true
 		dialogParent.addView(view)
 		dialogParent.setBlurEnabled(true)
+
+		dialogParent.elevation = elevation
 	}
 
 	override fun showDialog(
 		view: View,
 		elevation: Float,
 	) {
-		showDialog(view)
-		dialogParent.elevation = elevation
+		val decorView = window.decorView as ViewGroup
+		showDialog(view, decorView, elevation)
+	}
+
+	override fun showDialog(view: View) {
+		val decorView = window.decorView as ViewGroup
+		showDialog(view, decorView, 0f)
 	}
 
 	override fun hideDialog() {
@@ -123,11 +136,10 @@ class MainActivity : AppCompatActivity(), ParentActivityService {
 		dialogParent = binding.dialogParent
 	}
 
-	private fun configureDialogBehavior() {
-		val decorView = window.decorView as ViewGroup
+	private fun configureDialogBehavior(rootView: ViewGroup) {
 		dialogParent
-			.setupWith(decorView)
-			.setFrameClearDrawable(decorView.background)
+			.setupWith(rootView)
+			.setFrameClearDrawable(rootView.background)
 			.setBlurRadius(DIALOG_BLUR_RADIUS)
 		dialogParent.setBlurEnabled(false)
 	}
@@ -187,7 +199,6 @@ class MainActivity : AppCompatActivity(), ParentActivityService {
 		currentFragmentId = null
 
 		initializeComponents()
-		configureDialogBehavior()
 		configureNavigation()
 	}
 }
diff --git a/app/src/main/java/com/example/bondoman/views/components/TextInputComponent.kt b/app/src/main/java/com/example/bondoman/views/components/TextInputComponent.kt
index f5262780de4b67a9d56c36aa23101b145c255cc9..e87a97906dbc6cf6699955ed72d251813a580102 100644
--- a/app/src/main/java/com/example/bondoman/views/components/TextInputComponent.kt
+++ b/app/src/main/java/com/example/bondoman/views/components/TextInputComponent.kt
@@ -101,11 +101,13 @@ class TextInputComponent
 		}
 
 		fun disable() {
-			inputEditText.isEnabled = false
+			inputEditText.isCursorVisible = false
+			inputEditText.isFocusableInTouchMode = false
 		}
 
 		fun enable() {
-			inputEditText.isEnabled = true
+			inputEditText.isCursorVisible = true
+			inputEditText.isFocusableInTouchMode = true
 		}
 
 		// Setter methods for text change listeners
diff --git a/app/src/main/java/com/example/bondoman/views/fragments/TransactionAddFragment.kt b/app/src/main/java/com/example/bondoman/views/fragments/TransactionAddFragment.kt
index d3fd8be1f5ca1c6252a427d03014a335a4f316f0..1f6bf49a092d96f45c04e0fe7ed61cab7c11bd63 100644
--- a/app/src/main/java/com/example/bondoman/views/fragments/TransactionAddFragment.kt
+++ b/app/src/main/java/com/example/bondoman/views/fragments/TransactionAddFragment.kt
@@ -43,4 +43,13 @@ class TransactionAddFragment : TransactionFormFragment() {
 
 		return view
 	}
+
+	override fun onViewCreated(
+		view: View,
+		savedInstanceState: Bundle?,
+	) {
+		super.onViewCreated(view, savedInstanceState)
+
+		changeLocation()
+	}
 }
diff --git a/app/src/main/java/com/example/bondoman/views/fragments/TransactionFormFragment.kt b/app/src/main/java/com/example/bondoman/views/fragments/TransactionFormFragment.kt
index 441612e4f911608abc503509da0dc1980f7c1694..22362c02cde5a97cdbbd031d3b8c2905ffaf6fe9 100644
--- a/app/src/main/java/com/example/bondoman/views/fragments/TransactionFormFragment.kt
+++ b/app/src/main/java/com/example/bondoman/views/fragments/TransactionFormFragment.kt
@@ -2,6 +2,7 @@ package com.example.bondoman.views.fragments
 
 import android.content.Context
 import android.content.pm.PackageManager
+import android.location.Geocoder
 import android.location.Location
 import android.location.LocationListener
 import android.location.LocationManager
@@ -15,6 +16,7 @@ import android.widget.AdapterView
 import android.widget.ArrayAdapter
 import android.widget.Toast
 import androidx.activity.result.contract.ActivityResultContracts
+import androidx.annotation.RequiresApi
 import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
 import com.example.bondoman.R
@@ -25,6 +27,7 @@ import com.example.bondoman.databinding.FragmentTransactionFormBinding
 import com.example.bondoman.views.utils.interfaces.ParentActivityService
 import com.example.bondoman.views.utils.interfaces.SecondaryFragment
 import java.util.Date
+import java.util.Locale
 import java.util.function.Consumer
 
 abstract class TransactionFormFragment : Fragment(), SecondaryFragment {
@@ -55,12 +58,18 @@ abstract class TransactionFormFragment : Fragment(), SecondaryFragment {
 			ActivityResultContracts.RequestMultiplePermissions(),
 		) { permissions ->
 			when {
-				permissions.getOrDefault(android.Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
+				permissions.getOrDefault(
+					android.Manifest.permission.ACCESS_FINE_LOCATION,
+					false,
+				) -> {
 					// Precise location access granted.
 					requestLocation()
 				}
 
-				permissions.getOrDefault(android.Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
+				permissions.getOrDefault(
+					android.Manifest.permission.ACCESS_COARSE_LOCATION,
+					false,
+				) -> {
 					// Only approximate location access granted.
 					requestLocation()
 				}
@@ -85,7 +94,8 @@ abstract class TransactionFormFragment : Fragment(), SecondaryFragment {
 				provider: String,
 				status: Int,
 				extras: Bundle,
-			) {}
+			) {
+			}
 
 			override fun onProviderEnabled(provider: String) {}
 
@@ -102,7 +112,8 @@ abstract class TransactionFormFragment : Fragment(), SecondaryFragment {
 				provider: String,
 				status: Int,
 				extras: Bundle,
-			) {}
+			) {
+			}
 
 			override fun onProviderEnabled(provider: String) {}
 
@@ -143,7 +154,7 @@ abstract class TransactionFormFragment : Fragment(), SecondaryFragment {
 
 	protected fun setLocation(location: String?) {
 		this.location = location
-		binding.transactionFormLocationField.setText(location ?: "-")
+		binding.transactionFormLocationField.setText(location)
 	}
 
 	override fun onCreate(savedInstanceState: Bundle?) {
@@ -195,6 +206,44 @@ abstract class TransactionFormFragment : Fragment(), SecondaryFragment {
 			}
 		}
 
+	@RequiresApi(Build.VERSION_CODES.TIRAMISU)
+	private fun getLocationString(
+		location: Location,
+		callback: (String?) -> Unit,
+	) {
+		val geocoder = Geocoder(requireContext(), Locale.getDefault())
+		geocoder.getFromLocation(
+			location.latitude,
+			location.longitude,
+			1,
+		) { addresses ->
+			if (addresses.isNotEmpty()) {
+				val address = addresses[0]
+				val locationString = address.getAddressLine(0)
+				callback(locationString)
+			} else {
+				callback(null)
+			}
+		}
+	}
+
+	private fun getLocationString(location: Location): String? {
+		val geocoder = Geocoder(requireContext(), Locale.getDefault())
+		val addresses =
+			geocoder.getFromLocation(
+				location.latitude,
+				location.longitude,
+				1,
+			)
+
+		return if (!addresses.isNullOrEmpty()) {
+			val address = addresses[0]
+			address.getAddressLine(0)
+		} else {
+			null
+		}
+	}
+
 	private fun changeLocationData() {
 		assert(currentGpsLocation != null || currentNetworkLocation != null)
 
@@ -213,8 +262,16 @@ abstract class TransactionFormFragment : Fragment(), SecondaryFragment {
 			currentLocation = currentNetworkLocation
 		}
 
-		location = currentLocation.toString()
-		binding.transactionFormLocationField.setText(currentLocation.toString())
+		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+			getLocationString(currentLocation!!) {
+				location = it
+				binding.transactionFormLocationField.setText(it)
+			}
+		} else {
+			val locationString = getLocationString(currentLocation!!)
+			location = locationString
+			binding.transactionFormLocationField.setText(locationString)
+		}
 	}
 
 	private fun requestLocation() {
@@ -229,19 +286,19 @@ abstract class TransactionFormFragment : Fragment(), SecondaryFragment {
 				) == PackageManager.PERMISSION_GRANTED,
 		)
 
+		binding.transactionFormLocationField.text = null
+		binding.transactionFormLocationField.setHint("Getting location ...")
 		currentGpsLocation = null
 		currentNetworkLocation = null
 
 		val hasGps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
 		val hasNetwork = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
 
-		val currentApiVersion = Build.VERSION.SDK_INT
-
 		Log.d("HAS GPS", hasGps.toString())
 		Log.d("HAS NETWORK", hasNetwork.toString())
 
 		if (hasGps) {
-			if (currentApiVersion >= Build.VERSION_CODES.R) {
+			if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
 				locationManager.getCurrentLocation(
 					LocationManager.GPS_PROVIDER,
 					null,
@@ -258,7 +315,7 @@ abstract class TransactionFormFragment : Fragment(), SecondaryFragment {
 		}
 
 		if (hasNetwork) {
-			if (currentApiVersion >= Build.VERSION_CODES.R) {
+			if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
 				locationManager.getCurrentLocation(
 					LocationManager.NETWORK_PROVIDER,
 					null,
@@ -283,7 +340,7 @@ abstract class TransactionFormFragment : Fragment(), SecondaryFragment {
 		}
 	}
 
-	private fun changeLocation() {
+	protected fun changeLocation() {
 		if (
 			ContextCompat.checkSelfPermission(
 				requireContext(),
diff --git a/app/src/main/java/com/example/bondoman/views/fragments/TransactionListFragment.kt b/app/src/main/java/com/example/bondoman/views/fragments/TransactionListFragment.kt
index 773ed23df5b5c296b15ceccab1580a37c6399ddc..15b31fc6bcde8de39fca1bcf551a5c9c2b4b64c4 100644
--- a/app/src/main/java/com/example/bondoman/views/fragments/TransactionListFragment.kt
+++ b/app/src/main/java/com/example/bondoman/views/fragments/TransactionListFragment.kt
@@ -32,8 +32,6 @@ class TransactionListFragment : Fragment(), TransactionClickListener {
 	private lateinit var viewBinding: FragmentTransactionListBinding
 	private lateinit var currentTransactionObserver: (Transaction?) -> Unit
 
-	private val blurRadius: Float = 1f
-
 	private fun configureRecyclerView() {
 		val transactions: List<Transaction> =
 			listOf(
@@ -113,7 +111,7 @@ class TransactionListFragment : Fragment(), TransactionClickListener {
 		}
 
 		detailLayout.setDeleteListener {
-			parentActivityService.showDialog(dialog)
+			parentActivityService.showDialog(dialog, detailLayout, DIALOG_ELEVATION)
 		}
 	}
 
@@ -152,12 +150,12 @@ class TransactionListFragment : Fragment(), TransactionClickListener {
 	): View {
 		viewBinding = FragmentTransactionListBinding.inflate(inflater, container, false)
 
-		addDialogComponent(inflater, container)
-
 		configureRecyclerView()
 
 		configureDetailView()
 
+		addDialogComponent(inflater, container)
+
 		configureAddButton()
 
 		return viewBinding.root
@@ -173,6 +171,8 @@ class TransactionListFragment : Fragment(), TransactionClickListener {
 	}
 
 	companion object {
+		const val DIALOG_ELEVATION = 10f
+
 		@JvmStatic
 		fun newInstance() =
 			TransactionListFragment().apply {
diff --git a/app/src/main/java/com/example/bondoman/views/fragments/TransactionUpdateFragment.kt b/app/src/main/java/com/example/bondoman/views/fragments/TransactionUpdateFragment.kt
index 0a4136bda88f2f85e39b408ab1a8bba4c965eed2..a33e258c2cb827f03b5f0b72ad186c6db6f524f1 100644
--- a/app/src/main/java/com/example/bondoman/views/fragments/TransactionUpdateFragment.kt
+++ b/app/src/main/java/com/example/bondoman/views/fragments/TransactionUpdateFragment.kt
@@ -60,6 +60,9 @@ class TransactionUpdateFragment : TransactionFormFragment() {
 		val autoCompleteTextView = getBinding().transactionFormAutoComplete
 		autoCompleteTextView.dropDownHeight = 0
 
+		// change location hint
+		getBinding().transactionFormLocationField.hint = "Change location"
+
 		// fill input fields
 		val currentTransaction = args.CurrentTransaction
 		setCategory(currentTransaction.category)
diff --git a/app/src/main/java/com/example/bondoman/views/utils/interfaces/ParentActivityService.kt b/app/src/main/java/com/example/bondoman/views/utils/interfaces/ParentActivityService.kt
index a83e1741a1f520a3b885a77a60f173769fb9a907..024726a4dfa03d8319395c1dc700e88fed9c4335 100644
--- a/app/src/main/java/com/example/bondoman/views/utils/interfaces/ParentActivityService.kt
+++ b/app/src/main/java/com/example/bondoman/views/utils/interfaces/ParentActivityService.kt
@@ -1,6 +1,7 @@
 package com.example.bondoman.views.utils.interfaces
 
 import android.view.View
+import android.view.ViewGroup
 import android.view.ViewGroup.LayoutParams
 
 interface ParentActivityService {
@@ -30,6 +31,12 @@ interface ParentActivityService {
 		elevation: Float,
 	)
 
+	fun showDialog(
+		view: View,
+		rootView: ViewGroup,
+		elevation: Float,
+	)
+
 	fun hideDialog()
 
 	fun dialogParentId(): Int
diff --git a/app/src/main/res/layout/component_text_input.xml b/app/src/main/res/layout/component_text_input.xml
index 55a625114813de201eacf72ca750024011900d18..76a089a87d7e7542f16ae73783f2a650870eab9d 100644
--- a/app/src/main/res/layout/component_text_input.xml
+++ b/app/src/main/res/layout/component_text_input.xml
@@ -16,7 +16,7 @@
     <com.google.android.material.textfield.TextInputEditText
         android:id="@+id/text_input_component_field"
         android:layout_width="match_parent"
-        android:layout_height="39dp"
+        android:layout_height="wrap_content"
         android:background="@drawable/bg_full_border"
         android:hint="@string/dummy_input_text_hint"
         android:inputType="text"
diff --git a/app/src/main/res/layout/fragment_transaction_form.xml b/app/src/main/res/layout/fragment_transaction_form.xml
index b640e3a9b85e7cbfb2efa4ce5de92ea66c1f44b3..aa7c1f5ca1e857516463dee896a0cc294b275a87 100644
--- a/app/src/main/res/layout/fragment_transaction_form.xml
+++ b/app/src/main/res/layout/fragment_transaction_form.xml
@@ -69,11 +69,13 @@
         <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/transaction_form_location_field"
             android:layout_width="match_parent"
-            android:layout_height="39dp"
+            android:layout_height="wrap_content"
             android:background="@drawable/bg_full_border"
-            android:enabled="false"
+            android:cursorVisible="false"
+            android:focusableInTouchMode="false"
             android:hint="@string/hint_transaction_form_location"
             android:imeOptions="actionDone"
+            android:inputType="text"
             android:padding="10dp"
             android:textAppearance="@style/TextAppearance.TransactionForm.Input"
             android:textColor="@color/zinc_300"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e301f3438c68021bb42f0de0be37fe0928e8ae78..1153e44bbe0472a184941437dd08ae6da8c63291 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -25,7 +25,7 @@
     <string name="dummy_text_input_label">Label</string>
     <string name="dummy_input_text_hint">Hint</string>
     <string name="label_transaction_form_location">Location</string>
-    <string name="hint_transaction_form_location">Allow to access location</string>
+    <string name="hint_transaction_form_location">Allow location access</string>
     <string name="text_change_location">Change location</string>
     <string name="text_save_button">Save</string>
     <string name="dummy_dropdown_item">Item</string>