我正在使用 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
}
如果有人能帮助我并给我一些建议,我将不胜感激。
答案 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()
)
}