美文网首页
有关布局的问题(三)

有关布局的问题(三)

作者: zgfei | 来源:发表于2017-12-13 15:38 被阅读15次

前言

那些年使用过的布局,遇到的坑以及如何解决
前两篇:
NestedScrollView、RecycleView、ViewPager 等布局方面的常见问题汇总,及解决
有关布局问题:TextView、EditText……(二)
在前两篇中已经记录了一些常用布局可能出现的问题,以及解决方式,这里会继续记录此类问题,以便以后查有出处。

问题一:

使用RecycleView更新完数据(调用完notifyDataSetChanged();)然后滑动到最后的一个条目(调用mRecycleView.smoothScrollToPosition(mRVAdapter.getItemCount() - 1);)出现RecycleView不显示的问题

解决方法:

出现这种情况的原因是,首先RecycleView为空,然后获取数据后进行更新,更新完立马调用滑动方法,导致整个RecycleView不显示。猜测:可能是RecycleView设置完数据还没有刷新完成,还没有绘制到屏幕上,就进行了滑动操作,结果导致不显示,延时滑动可以解决这个问题。

// 延时滑动
mRecycleView.postDelayed(new Runnable() {
            @Override
            public void run() {
                if (mRVAdapter.getItemCount() > 2) {
                    mRecycleView.smoothScrollToPosition(mAdapter.getItemCount() - 1);
                }
            }
        }, 300);

但是如果仅仅判断item的条数大于2再滑动,也可以解决。
使用滑动到底部的方式是使用的mAdapter.getItemCount() - 1,获取最后一条的position,然后滑动,这个地方会出现一个bug,就是没有数据的情况下,获取到的数据为0,而0-1 = -1,就是抛出异常,因此在使用时尽量判断一下。

RatingBar问题

RatingBar是系统高度定制的,因此很难进行扩展和修改,这里讲解几个关于RatingBar的问题

问题二:

替换系统图片

我们需要写一个自己的style来覆盖掉系统自带的style
在styles文件里添加自己的style

<style name="mRatingBar" parent="@android:style/Widget.RatingBar">
    <item name="android:progressDrawable">@drawable/rating_star</item>
    <item name="android:minHeight">16dp</item>
    <item name="android:minWidth">16dp</item>
</style>

这里的@drawable/rating_star是关键,在drawable文件夹下创建rating_star.xml文件,完整的实现如下

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@android:id/background"
    android:drawable="@mipmap/your_empty_image">
</item>
<item android:id="@android:id/secondaryProgress"
    android:drawable="@mipmap/your_half_image">
</item>
<item
    android:id="@android:id/progress"
    android:drawable="@mipmap/your_filing_image">
</item>
</layer-list>

然后在自己的RatingBar的布局下添加:

style="@style/mRatingBar"

这样就可以替换系统图片了。

问题三:

RatingBar出现拉长的小脚或者截断的情况

解决方法:

在style中添加:

<item name="android:minHeight">16dp</item>
<item name="android:minWidth">16dp</item>

其宽和高的最小值要根据自己图片的大小进行设置,避免太大,或者太小。
同时在RatingBar的布局文件中设置:

android:layout_width="wrap_content"
android:layout_height="wrap_content"
问题四:

星星间距问题

解决方法:

间距问题这个要麻烦UI了,切图片的时候就将间距加上,不然间距就是系统的默认间距,或者产品不介意。

问题五:

在开发中有一个需求,就是在listView的header View中添加一个横向滑动的RecycleView,这个功能在部分手机上出现问题。

问题描述:在第一次进入当前页面时,横向滑动没有反应,竖向滑动没有影响,当向上滑动一部分后,横向滑动就可以了,但是如果滑动到顶部,横向滑动又变的没有反应。另外如果滑动的距离超过了横向的RecycleView时或者进入其他页面重新返回此页面时,横向滑动就可以了,不会再出现横向滑动没反应的问题。

问题机型:小米6、小米mix2、华为v10(目前就发现此三款机型)

解决:

在RecycleView所在父布局中添加如下:

  android:descendantFocusability="blocksDescendants"

具体解析请看 NestedScrollView、RecycleView、ViewPager 等布局方面的常见问题汇总,及解决 中的问题

相关文章

  • 有关布局的问题(三)

    前言 那些年使用过的布局,遇到的坑以及如何解决前两篇:NestedScrollView、RecycleView、V...

  • 有关布局问题:TextView、EditText……(二)

    问题一: 使用 TextView 设置末尾显示省略号问题,设置下面代码,没有效果 解决方法: 设置 android...

  • 页面布局

    概述: 页面布局常用的方法有浮动布局、绝对定位布局、表格布局、弹性布局(flex)、网格布局 三栏布局问题高度已知...

  • 三列布局的问题

    test body{margin: 0;padding:0;}header...

  • 基于前端布局神器display:flex 页面布局justify

    我们要解决问题,要先知道Flex布局是什么?有关于Flex布局布局网上搜的有一大堆,怎么使用,怎么设置,我这里是解...

  • 三栏布局问题

    绝对定位法左右两栏采用绝对定位,分别固定在页面的两侧,中间的主体栏用左右margin值撑开距离Tips左右posi...

  • css布局

    简单的布局问题 高度已知,三栏布局,要求左右宽度固定,中间自适应,怎么实现?

  • CSS经典布局

    CSS经典布局 本文主要对一些常见的CSS布局问题进行总结,涉及三栏布局、负margin、清除浮动、居中布局、Fl...

  • CSS实现三栏自适应

    主要了解常规三栏,圣杯布局,双飞翼布局。 其中常规三栏主要解决自适应问题。圣杯布局和双飞翼布局主要解决中间优先渲染...

  • 无标题文章

    响应式 布局系统 优先级 css3动画 动画性能 布局(三栏) 栅格化布局 flexbox布局 硬件加速问题 BF...

网友评论

      本文标题:有关布局的问题(三)

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