Android 将回收的视图卡放在底页内

Android 将回收的视图卡放在底页内,android,android-studio,android-layout,kotlin,bottom-sheet,Android,Android Studio,Android Layout,Kotlin,Bottom Sheet,我正在试着做一张有卡片的底片。我已经试过了所有的方法,但我不知道如何在底部的表格中正确显示所有的卡片。我的代码出来与多个底片正在创建和cardsSee第二张照片任何援助将不胜感激。我正在尝试做一些类似于图示的事情,或者如果有任何资源可以复制这一点,因为我在任何地方都找不到类似的东西: MainActivity.kt class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState:

我正在试着做一张有卡片的底片。我已经试过了所有的方法,但我不知道如何在底部的表格中正确显示所有的卡片。我的代码出来与多个底片正在创建和cardsSee第二张照片任何援助将不胜感激。我正在尝试做一些类似于图示的事情,或者如果有任何资源可以复制这一点,因为我在任何地方都找不到类似的东西:

MainActivity.kt

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        if (supportActionBar != null)
            supportActionBar?.hide()

        configureBackdrop()

        val bottomSheetFragment = BottomSheetExampleDialogFragment()
        bottomSheetFragment.show(supportFragmentManager, bottomSheetFragment.getTag())
    }

    private var mBottomSheetBehavior: BottomSheetBehavior<View?>? = null

    private fun configureBackdrop() {
        // Get the fragment reference
        val fragment = supportFragmentManager.findFragmentById(R.id.filter_fragment)

        fragment?.let {
            // Get the BottomSheetBehavior from the fragment view
            it.view?.let { it1 ->
                BottomSheetBehavior.from(it1).let { bsb ->

                    mBottomSheetBehavior = bsb
                }
            }
        }
    }
}
主要活动

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:text="@string/main_activity_text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />


    <fragment
        app:behavior_hideable="false"
        app:behavior_peekHeight="10dp"
        android:layout_marginTop="?attr/actionBarSize"
        app:behavior_skipCollapsed="false"
        android:id="@+id/filter_fragment"
        app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:name="behavior.sheet.bottom.BackdropFragment" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
背景碎片

<?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:background="@drawable/backdrop_fragment_background"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/backdrop_content" />

    <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="75dp"
        android:clickable="true"
        android:focusable="true"
        android:foreground="?android:attr/selectableItemBackground"
        android:orientation="vertical"
        card_view:cardCornerRadius="30dp"
        card_view:cardElevation="5dp"
        card_view:cardUseCompatPadding="false"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        card_view:contentPadding="10dp">

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="16dp">

            <TextView
                android:id="@+id/txt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="15dp"
                android:text="Title"
                android:textSize="20sp"
                android:textStyle="bold" />

            <ImageView
                android:id="@+id/img"
                android:layout_width="30dp"
                android:layout_height="match_parent"
                android:layout_marginStart="25dp"
                android:layout_toRightOf="@+id/txt"
                android:contentDescription="@string/app_name" />

            <TextView
                android:id="@+id/sub_txt"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginStart="25dp"
                android:layout_toRightOf="@+id/img"
                android:autoSizeMaxTextSize="8sp"
                android:autoSizeMinTextSize="6sp"
                android:autoSizeStepGranularity="2sp"
                android:autoSizeTextType="uniform"
                android:text="Title" />
        </RelativeLayout>
    </androidx.cardview.widget.CardView>
</LinearLayout>
底部图纸布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rcv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

使用您想要的任何约束自定义布局,并将布局行为传递给“回收器视图”,只需将视图替换为“回收器视图”

   app:layout_behavior="app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior""
在类文件中使用

使用全局变量

   private var mBottomSheetBehavior: BottomSheetBehavior<*>? = null
当创建名为“方法”的视图并传递布局id和“窥视高度”时,第一次使用“隐藏视图”

/**
 * set bottom sheet behavior and state
 */
private fun setBottomSheetAndCallBackBottomSheetBehaviour() {


    mBottomSheetBehavior?.state = BottomSheetBehavior.STATE_HIDDEN

    //callback
    mBottomSheetBehavior?.setBottomSheetCallback(object :
        BottomSheetBehavior.BottomSheetCallback() {
        override fun onStateChanged(bottomSheet: View, newState: Int) {
            if (newState == BottomSheetBehavior.STATE_COLLAPSED) {
                bottomSheetCollapsed()
            }
        }

        override fun onSlide(bottomSheet: View, slideOffset: Float) {}
    })
}
并采用以下方法进行膨胀和坍塌

 private fun bottomSheetExpand() {
    mBottomSheetBehavior?.state = BottomSheetBehavior.STATE_EXPANDED
}

private fun bottomSheetCollapsed() {
    mBottomSheetBehavior?.state = BottomSheetBehavior.STATE_COLLAPSED
}
点击查看使用

  fun isExpendCollapse(){
     if (mBottomSheetBehavior?.state == BottomSheetBehavior.STATE_COLLAPSED) {
                bottomSheetExpand()
            } else {
                bottomSheetCollapsed()
            }
}
检查xml文件协调布局对于底部工作表行为是必须的

 <android.support.design.widget.CoordinatorLayout
    android:id="@+id/bottomSheet"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:clipToPadding="true"
    android:visibility="gone"
    app:behavior_hideable="true"
    app:behavior_peekHeight="0dp"
    android:layout_alignParentBottom="true"

    >



 <android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerr_view"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
   />

</android.support.design.widget.CoordinatorLayout> 

可以约束布局、线性视图或任何视图而不是视图。我已将cordinate布局设置为相对布局父布局,您可以根据需要使用

谢谢你的帮助,我不知道我应该把这些都放在我的项目里。所有这些都应该在主要活动还是底部?活动主目录中的xml是吗???在底部工作表中。xml按相对布局更改线性布局,并在相对布局中粘贴我的最后一个xml文件所有方法粘贴在类文件中,并在视图创建时设置适配器和底部工作表。然后单击名为isExpendCollapse的视图。在xml文件中检查recylerview布局行为app:layout\u behavior=app:layout\u behavior=com.google.android.material.bottomsheet.BottomSheetBehavior
/**
 * set bottom sheet behavior and state
 */
private fun setBottomSheetAndCallBackBottomSheetBehaviour() {


    mBottomSheetBehavior?.state = BottomSheetBehavior.STATE_HIDDEN

    //callback
    mBottomSheetBehavior?.setBottomSheetCallback(object :
        BottomSheetBehavior.BottomSheetCallback() {
        override fun onStateChanged(bottomSheet: View, newState: Int) {
            if (newState == BottomSheetBehavior.STATE_COLLAPSED) {
                bottomSheetCollapsed()
            }
        }

        override fun onSlide(bottomSheet: View, slideOffset: Float) {}
    })
}
 private fun bottomSheetExpand() {
    mBottomSheetBehavior?.state = BottomSheetBehavior.STATE_EXPANDED
}

private fun bottomSheetCollapsed() {
    mBottomSheetBehavior?.state = BottomSheetBehavior.STATE_COLLAPSED
}
  fun isExpendCollapse(){
     if (mBottomSheetBehavior?.state == BottomSheetBehavior.STATE_COLLAPSED) {
                bottomSheetExpand()
            } else {
                bottomSheetCollapsed()
            }
}
 <android.support.design.widget.CoordinatorLayout
    android:id="@+id/bottomSheet"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:clipToPadding="true"
    android:visibility="gone"
    app:behavior_hideable="true"
    app:behavior_peekHeight="0dp"
    android:layout_alignParentBottom="true"

    >



 <android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerr_view"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
   />

</android.support.design.widget.CoordinatorLayout>