Genel

Android Kotlin -> Context Menü

Merhabalar,

Bugün ki yazımızda Android ‘in context Menü özelliğini göreceğiz. Context menü aşağıdaki gibi bir view’e tıklandığında açılan menü stilidir.

İster MainActivity, isterseniz benim gibi yeni PopupMenuActivity açabilirsiniz. PopupMenu.OnMenuItemClickListener sınıfını implemente ediniz. bu menü eklediğiniz itemlere click işlemi olduğunda sonuç gösterebilmeniz için.

showPopup ile menüyü gösterebiliyoruz.


import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import android.widget.PopupMenu
import android.widget.Toast
import com.umiitkose.androidexampleswithkotlin.R

class PopupMenuActivity : AppCompatActivity(), PopupMenu.OnMenuItemClickListener{

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

    fun showPopup(view: View){
        val popup = PopupMenu(this, view)
        val inflater: MenuInflater = popup.menuInflater
        inflater.inflate(R.menu.menu_popup,popup.menu)
        popup.setOnMenuItemClickListener(this)
        popup.show()
    }

    override fun onMenuItemClick(item: MenuItem?): Boolean {

        return when(item?.itemId){
            R.id.action_mail -> {Toast.makeText(this,"Mail",Toast.LENGTH_LONG).show()
            true
            }
            R.id.action_upload -> {Toast.makeText(this,"Upload",Toast.LENGTH_LONG).show()
                true
            }
            R.id.action_share -> {Toast.makeText(this,"Share",Toast.LENGTH_LONG).show()
                true
            }
            else -> false
        }
    }
}

activity_popup_menu layout:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="//schemas.android.com/apk/res/android"
        xmlns:app="//schemas.android.com/apk/res-auto"
        xmlns:tools="//schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".example.menu.popup.PopupMenuActivity">

    <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:onClick="showPopup"/>
</androidx.constraintlayout.widget.ConstraintLayout>

ve son olarak menu_popup, bunu res klasörü altında new -> Android Resource Directory -> menu ile menü klasörü oluşturup new -> Menu Resource File ‘ın içerisine ekleyiniz.

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="//schemas.android.com/apk/res/android">

    <item android:id="@+id/action_mail"
            android:title="Mail Gönder"/>


    <item android:id="@+id/action_upload"
            android:title="Yükle"/>


    <item android:id="@+id/action_share"
            android:title="Paylaş"/>

</menu>

Context Menü oluşturmak bu kadar kolay.

Okuduğunuz için teşekkür ederiz.

One thought on “Android Kotlin -> Context Menü

  • ibrahim

    Hocam “popup.setOnMenuItemClickListener(this)” kodunda this tam olarak ne oluyor fragmentte databinding ile kullanmaya çalışıyorum ama thisin ne olduğunu anlıyamadım ?

    Yanıtla

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir