Skip to content

Instantly share code, notes, and snippets.

@PetreaLoredana
Created May 17, 2019 07:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PetreaLoredana/a6d61d8ef80dbf72bbca476f7a561902 to your computer and use it in GitHub Desktop.
Save PetreaLoredana/a6d61d8ef80dbf72bbca476f7a561902 to your computer and use it in GitHub Desktop.
Implementation for a custom dialog containing a TextView, an EditText and two buttons.
<?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"
android:layout_width="match_parent"
android:layout_height="150dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/title"
android:textSize="20sp"
android:textStyle="bold|italic"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="@string/resolve"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/anchor_id"
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp"
app:layout_constraintTop_toBottomOf="@+id/title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<TextView
android:layout_width="wrap_content"
android:text="@string/cancel"
android:id="@+id/cancel"
android:layout_marginEnd="50dp"
android:textColor="@color/colorPrimary"
android:textAllCaps="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/resolve"
app:layout_constraintTop_toBottomOf="@+id/anchor_id"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:text="@string/res"
android:textAllCaps="true"
android:layout_marginEnd="17dp"
android:id="@+id/resolve"
android:textColor="@color/colorPrimary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/anchor_id"
android:layout_height="wrap_content"/>
</android.support.constraint.ConstraintLayout>
package com.example.cloudanchorsardemo.dialog
import android.app.Dialog
import android.content.Context
import android.content.res.Resources
import android.os.Bundle
import android.support.annotation.NonNull
import android.view.ViewGroup
import android.view.Window
import com.example.cloudanchorsardemo.R
import kotlinx.android.synthetic.main.reslove_dialog.*
open class ResolveDialog(
@NonNull context: Context,
var onPositiveCallback: PositiveButtonListener
) : Dialog(context) {
val DIALOG_SIDE_MARGIN = 20f //size in dp
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.reslove_dialog)
setupDialogLayoutParams()
cancel.setOnClickListener { dismiss() }
resolve.setOnClickListener { onPositiveCallback.onPositiveButtonClicked(anchor_id.text.toString())
dismiss()}
}
private fun setupDialogLayoutParams() {
val metrics = context.resources.displayMetrics
val dialogWindowWidth = metrics.widthPixels - dp2px(context.resources, DIALOG_SIDE_MARGIN).toInt()
window!!.setLayout(dialogWindowWidth, ViewGroup.LayoutParams.WRAP_CONTENT)
}
fun dp2px(resources: Resources, dp: Float): Float {
val scale = resources.displayMetrics.density
return dp * scale + 0.5f
}
interface PositiveButtonListener{
fun onPositiveButtonClicked(dialogValue: String)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment