美文网首页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