loading...

???? ?????? ????? ????? ??

بازدید : 13
يکشنبه 15 آبان 1401 زمان : 10:04

پوشه layout برای قرار گیری NavigationView را پیاده سازی می‌کنیم. رایاپارس این به عبارتی فایلی میباشد طراحی اپلیکیشن در مشهد که بایستی به وسیله HomeActivity یا این که DashboardActivity استعمال شود:


xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:background="@color/theme_color">


android:layout_width="match_parent"
android:layout_height="match_parent">

android:layout_width="wrap_content"
android:id="@+id/im_hamburger"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_10"
android:padding="13dp"
app:srcCompat="@drawable/ic_left_menu"
tools:ignore="VectorDrawableCompat" />

......


android:id="@+id/side_nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start">


android:id="@+id/side_nav_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
android:name="com.amani.SideNavFragment"
tools:layout="@layout/fragment_side_nav" />


در تگ FragmentContainerView می‌بینید application که صفتی با اسم name وجود داراست و مقدار آن اسم فرگمنتی میباشد که میزبانی می گردد. ما در آن اسم کلاس SideNavFragment را که در پی میسازیم و یک فرگمنت میباشد قرار داده ایم.

Activity به طور ذیل میباشد:

// Mohamadreza Amani
// Email: help4usr@gmail.com
package com.amani.sidenav

import android.سیستم عامل.Bundle
import androidx.appcompat.app.AppCompatActivity

class DashboardActivity: AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
im_hamburger?.setOnClickListener {
drawer_layout.openDrawer(GravityCompat.START)
}
}

fun closeDrawer(item: SideNavItem) {
drawer_layout?.closeDrawer(GravityCompat.START)
when (item.id) {
1 -> {
handleUpgrade()
}
2 -> {
rateUs()
}
3 -> {
shareApp()
}
4 -> {
handlesettings()
}

}
}

}

مرحله چهارم
طراحی پوشه layout برای SideNavFragment :


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"
android:background="@color/white">

android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/theme_color"
app:layout_constraintBottom_toBottomOf="@+id/txt_app_name"
app:layout_constraintTop_toTopOf="parent" />


android:id="@+id/txt_app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingBottom="70dp"
android:layout_marginTop="70dp"
android:textColor="@color/white"
android:textSize="40sp"
app:fontFamily="@font/sample"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="Side Nav" />


android:id="@+id/rv_side_nav_options"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="10dp"
android:clipToPadding="false"
app:layout_constraintTop_toBottomOf="@id/header"
tools:layout_editor_absoluteX="0dp" />

کد بالا را میتوانید به نحوه دلخواه خودتان هم پیاده فرمائید. این کد صرفا یک مثال بود. این به عبارتی برنامه ای میباشد که با کلیک روی منو یا این که کشیدن از سمت چپ ، آن را شاهد آن هستیم.

مرحله پنجم
اینک فرصت طراحی SideNavFragment فرا رسیده میباشد. درین کلاس ، شی از نوع آداپتور ساخت می‌کنیم که منوها را اکران می‌دهد:

// Mohamadreza Amani
// Email: help4usr@gmail.com
package com.amani.sidenav


import android.سیستم عامل.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.sidenav.SideNavAdapter
import com.example.sidenav.SideNavItem
import kotlinx.android.synthetic.main.fragment_side_nav.*


class SideNavFragment: Fragment(){


private val sideNavAdapter: SideNavAdapter = SideNavAdapter { position, item ->
onItemClick(position,item)
}


private fun onItemClick(position: Int, item: SideNavItem) {
Toast.makeText(requireContext(),"" + item.itemName,Toast.LENGTH_LONG).show()
(activity as MenuScreen).closeDrawer(item)
}


override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_side_nav, container, false)


override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setUpViews()
}


private fun setUpViews() {
rv_side_nav_options?.layoutManager = LinearLayoutManager(requireActivity(), LinearLayoutManager.VERTICAL, false)
rv_side_nav_options?.adapter = sideNavAdapter
sideNavAdapter.setNavItemsData(prrepareNavItems())
}


//در اینجا لیستی از گزینه هایی می‌سازیم که میخواهیم در منو اکران داده گردد
private fun prrepareNavItems(): List {
val menuItemsList = ArrayList()
menuItemsList.add(SideNavItem(1, "Upgrade", R.drawable.ic_upgrade))
menuItemsList.add(SideNavItem(2, "Rate us", R.drawable.ic_rate))
menuItemsList.add(SideNavItem(3, "Share", R.drawable.ic_share))
menuItemsList.add(SideNavItem(5, "Settings", R.drawable.ic_settings))
return menuItemsList
}
}

پوشه layout برای قرار گیری NavigationView را پیاده سازی می‌کنیم. رایاپارس این به عبارتی فایلی میباشد طراحی اپلیکیشن در مشهد که بایستی به وسیله HomeActivity یا این که DashboardActivity استعمال شود:


xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:background="@color/theme_color">


android:layout_width="match_parent"
android:layout_height="match_parent">

android:layout_width="wrap_content"
android:id="@+id/im_hamburger"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_10"
android:padding="13dp"
app:srcCompat="@drawable/ic_left_menu"
tools:ignore="VectorDrawableCompat" />

......


android:id="@+id/side_nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start">


android:id="@+id/side_nav_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
android:name="com.amani.SideNavFragment"
tools:layout="@layout/fragment_side_nav" />


در تگ FragmentContainerView می‌بینید application که صفتی با اسم name وجود داراست و مقدار آن اسم فرگمنتی میباشد که میزبانی می گردد. ما در آن اسم کلاس SideNavFragment را که در پی میسازیم و یک فرگمنت میباشد قرار داده ایم.

Activity به طور ذیل میباشد:

// Mohamadreza Amani
// Email: help4usr@gmail.com
package com.amani.sidenav

import android.سیستم عامل.Bundle
import androidx.appcompat.app.AppCompatActivity

class DashboardActivity: AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
im_hamburger?.setOnClickListener {
drawer_layout.openDrawer(GravityCompat.START)
}
}

fun closeDrawer(item: SideNavItem) {
drawer_layout?.closeDrawer(GravityCompat.START)
when (item.id) {
1 -> {
handleUpgrade()
}
2 -> {
rateUs()
}
3 -> {
shareApp()
}
4 -> {
handlesettings()
}

}
}

}

مرحله چهارم
طراحی پوشه layout برای SideNavFragment :


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"
android:background="@color/white">

android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/theme_color"
app:layout_constraintBottom_toBottomOf="@+id/txt_app_name"
app:layout_constraintTop_toTopOf="parent" />


android:id="@+id/txt_app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingBottom="70dp"
android:layout_marginTop="70dp"
android:textColor="@color/white"
android:textSize="40sp"
app:fontFamily="@font/sample"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="Side Nav" />


android:id="@+id/rv_side_nav_options"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="10dp"
android:clipToPadding="false"
app:layout_constraintTop_toBottomOf="@id/header"
tools:layout_editor_absoluteX="0dp" />

کد بالا را میتوانید به نحوه دلخواه خودتان هم پیاده فرمائید. این کد صرفا یک مثال بود. این به عبارتی برنامه ای میباشد که با کلیک روی منو یا این که کشیدن از سمت چپ ، آن را شاهد آن هستیم.

مرحله پنجم
اینک فرصت طراحی SideNavFragment فرا رسیده میباشد. درین کلاس ، شی از نوع آداپتور ساخت می‌کنیم که منوها را اکران می‌دهد:

// Mohamadreza Amani
// Email: help4usr@gmail.com
package com.amani.sidenav


import android.سیستم عامل.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.sidenav.SideNavAdapter
import com.example.sidenav.SideNavItem
import kotlinx.android.synthetic.main.fragment_side_nav.*


class SideNavFragment: Fragment(){


private val sideNavAdapter: SideNavAdapter = SideNavAdapter { position, item ->
onItemClick(position,item)
}


private fun onItemClick(position: Int, item: SideNavItem) {
Toast.makeText(requireContext(),"" + item.itemName,Toast.LENGTH_LONG).show()
(activity as MenuScreen).closeDrawer(item)
}


override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_side_nav, container, false)


override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setUpViews()
}


private fun setUpViews() {
rv_side_nav_options?.layoutManager = LinearLayoutManager(requireActivity(), LinearLayoutManager.VERTICAL, false)
rv_side_nav_options?.adapter = sideNavAdapter
sideNavAdapter.setNavItemsData(prrepareNavItems())
}


//در اینجا لیستی از گزینه هایی می‌سازیم که میخواهیم در منو اکران داده گردد
private fun prrepareNavItems(): List {
val menuItemsList = ArrayList()
menuItemsList.add(SideNavItem(1, "Upgrade", R.drawable.ic_upgrade))
menuItemsList.add(SideNavItem(2, "Rate us", R.drawable.ic_rate))
menuItemsList.add(SideNavItem(3, "Share", R.drawable.ic_share))
menuItemsList.add(SideNavItem(5, "Settings", R.drawable.ic_settings))
return menuItemsList
}
}

نظرات این مطلب

تعداد صفحات : 0

درباره ما
موضوعات
آمار سایت
  • کل مطالب : 372
  • کل نظرات : 0
  • افراد آنلاین : 1
  • تعداد اعضا : 0
  • بازدید امروز : 348
  • بازدید کننده امروز : 1
  • باردید دیروز : 40
  • بازدید کننده دیروز : 0
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 394
  • بازدید ماه : 394
  • بازدید سال : 664
  • بازدید کلی : 23661
  • <
    پیوندهای روزانه
    اطلاعات کاربری
    نام کاربری :
    رمز عبور :
  • فراموشی رمز عبور؟
  • خبر نامه


    معرفی وبلاگ به یک دوست


    ایمیل شما :

    ایمیل دوست شما :



    کدهای اختصاصی