在弹出的 Android Studio 中添加视图寻呼机

时间:2021-04-26 15:05:43

标签: android android-studio kotlin android-fragments android-viewpager

我正在使用 Android Studio,我想在弹出窗口中添加一个视图寻呼机。我可以得到一些关于如何做的提示吗?我想将一个可滑动的页面插入到按下按钮时出现的弹出窗口中,但我不知道该怎么做。

这是ViewPagerAdapter的代码:

import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter

class ViewPagerAdapter(supportFragmentManager: FragmentManager) : FragmentPagerAdapter(supportFragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {

    private val mFragmentList = ArrayList<Fragment>()
    private val mFragmentTitleList = ArrayList<String>()

    override fun getCount(position: Int): Fragment {
        return mFragmentList[position]
    }

    override fun getItem(): Int {
        return mFragmentList.size
    }

    override fun getPageTitle(position: Int): CharSequence? {
        return mFragmentTitleList[position]
    }

    fun addFragment(fragment: Fragment , title: String) {
        mFragmentList.add(fragment)
        mFragmentTitleList.add(title)
    }
}

这是片段的代码:

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.drawerlayout.widget.DrawerLayout
import androidx.viewpager.widget.ViewPager
import com.google.android.material.tabs.TabLayout
import it.gaonaaragamba.kcalrecipes.R.*
import it.gaonaaragamba.kcalrecipes.ViewPagerAdapter.ViewPagerAdapter


private const val ARG_PARAM1 = "param1"
private const val ARG_PARAM2 = "param2"
lateinit var viewPager: ViewPager
lateinit var tabs: TabLayout


class Principal_fragment : 

    Fragment() {
    
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
    
            viewPager = getActivity().findViewById(R.id.viewPager)
    
    
            setUpTabs()
        }
    
        private fun setUpTabs() {
    
    
    
            tabs = tabs
    
            val adapter = ViewPagerAdapter(supportFragmentManager = )
            adapter.addFragment(BlankFragment(), "Ricetta")
            adapter.addFragment(IngredientFragment(), "Ingrediente")
            val viewPager =
            viewPager.adapter = adapter
        }

如果有人能帮助我并给我一些建议,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我已经在活动中完成了。检查这个..!!

**Open Dialog on Button Click**
val dialog = Dialog(requireActivity(), your_theme)
    val binding = DialogBinding.inflate(layoutInflater)
    dialog.apply {
        requestWindowFeature(Window.FEATURE_NO_TITLE)
        setCancelable(false)
        setContentView(binding.root)
        //set your viewpager here
        binding.viewpager2.adpter = mAdapter
        try {
            show()
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

**Dialog layout with viewpager2 (dialog.xml)**
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
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">
<androidx.viewpager2.widget.ViewPager2
    android:id="@+id/viewpager2"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="@drawable/top_blue_corner_gradient_bg"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

**your Viewpager Adapter**
class PagerAdapter(
private val list: List<String>,
private val context: Context
 ) : RecyclerView.Adapter<PagerAdapter.Holder>() {

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
    return Holder(
        ItemPagerBinding.inflate(LayoutInflater.from(parent.context), parent, false)
    )
}

override fun getItemCount(): Int {
    return list.size
}

override fun onBindViewHolder(holder: PlansViewHolder, position: Int) {
    holder.bind(list[position])
}

inner class Holder(private val binding: ItemPagerBinding) :
    RecyclerView.ViewHolder(binding.root) {

    fun bind(youtText: String) {
        binding.txtHeader.text = youtText
     }
   }
  }

**Viewpager item layout (item_pager.xml)**
<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
    android:id="@+id/txtHeader"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginStart="20dp"
    android:layout_marginTop="5dp"
    android:layout_marginEnd="20dp"
    android:layout_marginBottom="20dp"
    android:gravity="center"
    android:lineSpacingExtra="5dp"
    android:padding="10dp"
    android:textSize="15sp"/>
 </LinearLayout>

**intialize adapter like this**
 private val mAdapter by lazy {
    PagerAdapter(
        listOf(
            requireContext().getString(R.string.string1),
            requireContext().getString(R.string.string2),
            requireContext().getString(R.string.string3),
            requireContext().getString(R.string.string4),
            requireContext().getString(R.string.string5)
        ), requireContext()
    )
 }
相关问题