GridLayout在Kotlin?

我正在尝试在我的Kotlin Android应用程序中获得2×6(WxH)GridLayout。 我有我的XML和片段/适配器设置为一个RecyclerView,但是有点不知所措,如何应用一个GridLayout到这个。

我如何让我的项目(listview_row_enrollments.xml)显示在一个网格,而不是一个水平的列表?

EnrollmentFragment.kt

class EnrollmentsFragment : Fragment() { // TODO: Rename and change types of parameters private var mParam1: String? = null private var mParam2: String? = null private var mListener: OnFragmentInteractionListener? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (arguments != null) { mParam1 = arguments.getString(ARG_PARAM1) mParam2 = arguments.getString(ARG_PARAM2) } } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment var view = inflater!!.inflate(R.layout.fragment_enrollments, container, false) loadView(view) return view } fun loadView(view: View) { var recyclerView: RecyclerView = view.findViewById(R.id.recyclerView) as RecyclerView recyclerView.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) recyclerView.setHasFixedSize(true) recyclerView.adapter = EnrollmentsAdapter() } // override fun onAttach(context: Context?) { // super.onAttach(context) // if (context is OnFragmentInteractionListener) { // mListener = context // } else { // throw RuntimeException(context!!.toString() + " must implement OnFragmentInteractionListener") // } // } override fun onDetach() { super.onDetach() mListener = null } interface OnFragmentInteractionListener { // TODO: Update argument type and name fun onFragmentInteraction(uri: Uri) } companion object { private val ARG_PARAM1 = "param1" private val ARG_PARAM2 = "param2" fun newInstance(): EnrollmentsFragment { val fragment = EnrollmentsFragment() val args = Bundle() fragment.arguments = args return fragment } } }// Required empty public constructor 

EnrollmentsAdapter.kt:

 class EnrollmentsAdapter : RecyclerView.Adapter() { private val items: List init { this.items = Arrays.asList("Breaches", "Data Leaks", "Hacker Chatter", "Services Monitored", "xxx", "xxx") } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EnrollmentsViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.listview_row_enrollments, parent, false) // view.titleTextView.typeface = Typeface.createFromAsset(view.context.assets, "fonts/Montserrat-Regular.ttf") // view.countTextView.typeface = Typeface.createFromAsset(view.context.assets, "fonts/Montserrat-Regular.ttf") // view.subtextTextView.typeface = Typeface.createFromAsset(view.context.assets, "fonts/Montserrat-Regular.ttf") // view.updatedTextView.typeface = Typeface.createFromAsset(view.context.assets, "fonts/Montserrat-Light.ttf") return EnrollmentsViewHolder(view) } override fun onBindViewHolder(holder: EnrollmentsViewHolder, position: Int) { holder.bind(getItem(position)) } override fun getItemCount(): Int { return 6 } fun getItem(position: Int): String { return items[position] } class EnrollmentsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bind(value: String) { // itemView.titleTextView.text = value } } } 

FragmentEnrollments.xml:

    

listview_row_enrollments.xml:

     

现在我的观点是什么样的: 在这里输入图像说明

改用GridLayoutManager 。

更换:

 recyclerView.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) 

附:

 recyclerView.layoutManager = GridLayoutManager(context, 2) 

将您的recyclerview.layoutManagerLinearLayoutManager替换为GridLayoutManger GridLayoutManager文档