美文网首页android技术
android布局解决方案(汇总)

android布局解决方案(汇总)

作者: SeekLife0 | 来源:发表于2022-01-31 13:44 被阅读0次

    概述:记录一下常见布局的编写方式。

    1、实现固定宽度的自动换行操作。

    答:使用recyclerView的网格布局即可。

    2、实现非固定宽度的自动换行操作。

    答:使用别人的开源组件。
    应用场景,b站视频的标签,商品标签等等。

    <com.am.widget.wraplayout.WrapLayout
                android:id="@+id/container"
                android:layout_below="@id/tv2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="5dp"
                android:layout_marginTop="10dp"
                />
    
    //绑定标签
            var labelList = holder.getView<WrapLayout>(R.id.container) //获得recyclerView布局,设定为grid布局,一行
            labelList.removeAllViews() //瀑布流上拉加载的时候也会刷新recyclerView
            //标签水平间距
            labelList.horizontalSpacing = 10
            //标签垂直间距
            labelList.verticalSpacing = 10
            if(item.labelList != null && item.labelList.size != 0){
    //            Log.e("首页标签测试","每个item的标签数量 -> ${item.labelList.size}")
                for (i in item.labelList){
                    //创建圆角矩形shapeTextView
                    var stv = ShapeTextView(labelList.context)
                    var lp = LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.WRAP_CONTENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT
                    )
                    lp.bottomMargin = AutoSizeUtils.dp2px(context,4f)
                    lp.rightMargin = AutoSizeUtils.dp2px(context,3f)
                    stv.layoutParams = lp
                    stv.setPadding(AutoSizeUtils.dp2px(context,3f),AutoSizeUtils.dp2px(context,1.5f),AutoSizeUtils.dp2px(context,3f),AutoSizeUtils.dp2px(context,1.5f))
                    stv.text = i
                    stv.textSize = 9f
                    stv.textColorBuilder.setTextColor(Color.parseColor("#161616")).intoTextColor() //设置文字颜色
                    stv.setTextColor(Color.parseColor("#FF585858"))
                    stv.shapeDrawableBuilder.setRadius(30f).intoBackground() //设置圆角
                    stv.shapeDrawableBuilder.setSolidColor(Color.parseColor("#FFE0E0E0")).intoBackground()//设置背景颜色#FFE0E0E0
                    labelList.addView(stv)
                }
            }
    

    3、布局根据屏幕大小保持比例不变。

    答:使用LinearLayout布局,设置weightSum属性,子view设置layout_weight属性。记住需要把设定的宽度或者高度设置0dp。

    4、使布局固定到某一个位置,并且保持屏幕最上方。

    答:使用RelativeLayout布局,最后一个子View会显示在屏幕的最上方,不会被遮挡,常用来做activity标题头(titlebar)。

    5、组件需要进行旋转。

    答:使用如下属性即可。

    android:rotation="180"
    

    6、滑动布局。

    答:推荐使用NestedScrllView。

    7、如何使用recyclerView实现瀑布流布局。

    答:参考:https://www.jianshu.com/p/c4a7f0eb72f9

    8、消除recyclerView、scrollView的上下拉阴影。

    答:如下

     android:overScrollMode="never"
    

    9、禁止recyclerView滑动属性。

    android:nestedScrollingEnabled="false"
    

    10、固定顶部状态栏和底部虚拟按键

    在布局中添加如下属性

    android:fitsSystemWindows="true"
    

    待补充。。。

    相关文章

      网友评论

        本文标题:android布局解决方案(汇总)

        本文链接:https://www.haomeiwen.com/subject/rohhkrtx.html