我正在创建应用程序的一部分,其中有一个主要活动,在其中我添加了两个片段。它们是两个相同的ScrollView,我只是在其中 不同的文字。我想在它们之间做一个选择。
所以我的想法是: 我们有一个片段A,它将始终首先显示,而片段B在屏幕上不可见。我想在用户想要的时候放一个按钮以交换成两个片段。
那么,发展这个想法的最好方法是什么?我正在发布一些与片段A相关的代码:
主要片段活动:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listaMain">
<fragment android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.example.comprasapp.Lists.ListsFragments.ListViewSolo"
android:id="@+id/scrollSoloList"/>
</LinearLayout>
片段A:
<ScrollView
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:id="@+id/scrollSoloList"
android:layout_marginTop="8dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textListaSolo" tools:targetApi="o"/>
</ScrollView>
片段A控制器类:
class ListViewSolo : Fragment(){
var facade = Facade()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.lista_solo, container, true)
}
@RequiresApi(Build.VERSION_CODES.O)
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
view?.findViewById<TextView>(R.id.textListaSolo)?.autoSizeMaxTextSize
view?.findViewById<TextView>(R.id.textListaSolo)?.text = (facade.setListSolo())//I'm just setting the text on my TextView here
}
companion object{
// Aqui simplemente estás creando un objeto ListViewSolo por si en algun momento tienes que utilizarlo
fun newInstance(): ListViewSolo {
return ListViewSolo()
}
}
}
如果我可以澄清一些问题,请问。
答案 0 :(得分:1)
您不使用ViewPager
,它的主要用途是达到您的标准。
它还可以通过简单的animation在片段之间滑动implementation。
请查看this教程以了解如何在您的应用中实现ViewPager
答案 1 :(得分:1)
您可以使用容器在片段之间进行切换,
主要片段活动:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listaMain">
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
要在片段之间进行切换,您可以在任意位置使用它:
val fragment = ListViewSolo() // your fragment instance
val transaction = supportFragmentManager.beginTransaction()
transaction.replace(R.id.fragment_container, fragment)
add.commit()