CardView 动态修改布局 高度无法相应变化 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
xuhaoyangx

CardView 动态修改布局 高度无法相应变化

  •  
  •   xuhaoyangx Jan 11, 2017 14645 views
    This topic created in 3393 days ago, the information mentioned may be changed or developed.

    在 RecycleView 中 实现 FooterItem 三种状态,实现的方式是替换 item 根布局内的内容。

    发现在根布局是 CardView 时,替换高度不一致的内容时,高度不会跟着变化,会被掩盖掉一部分,不知道这样的情况,是要对 item 重绘还是整个 RecycleView 重绘? [图片和网站背景太相似了,大家可以选择图片看出问题]

    还有个疑问。因为在 onCreateViewHolder 需要 parent,不然item无法match_parent ,现在加载 cardview 的方式就是用了 xml 。不知道有没有用代码 new 一个的方式?

    mFooterLayout = (CardView) ViewUtils.inflate(parent, R.layout.item_comment_cardview); ViewUtils : public static View inflate(ViewGroup parent, int layoutId) { if (layoutId <= 0) { return null; } return LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false); } 
    14 replies    2017-01-13 09:19:00 +08:00
    xingda920813
        1
    xingda920813  
       Jan 11, 2017
    替换完 FooterView 后,对 Footer 所在的 Item 进行 RecyclerVew.Adapter.notifyItemChanged(int position) 试试?
    xingda920813
        2
    xingda920813  
       Jan 11, 2017
    为什么 “因为在 onCreateViewHolder 需要 parent ,不然 item 无法 match_parent ,现在加载 cardview 的方式就是用了 xml ”?
    我封装的 RecyclerView 的加载更多的 FooterView 就是 Java 代码生成的。似乎 ViewGroup.LayoutParams.MATCH_PARENT 可以正常工作,纵向列表的情况下, FooterView 的宽度是可以匹配到跟 RecyclerView 一样宽的。不解。
    xingda920813
        3
    xingda920813  
       Jan 11, 2017
    https://github.com/xingda920813/SimpleRecyclerView/blob/master/simplerecyclerview/src/main/java/com/xdandroid/simplerecyclerview/Adapter.java

    看一下 onCreateViewHolder 方法,只要给 new 出来的 ViewGroup 设一个 LayoutParams 就好了。
    xuhaoyangx
        4
    xuhaoyangx  
    OP
       Jan 12, 2017
    @xingda920813 如果是四大布局你设置这些没问题,也能 match_parent,但是 CardView 不行,设置了 LayoutParams 还是不能撑开
    xuhaoyangx
        5
    xuhaoyangx  
    OP
       Jan 12, 2017
    @xingda920813 github 赞一个,写法有些累赘。

    很简单的一个代码控制,但是就是撑不开,如果通过 xml inflate 加载没问题

    xingda920813
        6
    xingda920813  
       Jan 12, 2017
    @xuhaoyangx CardView 外面用代码包一层 FrameLayout 四大布局之类的东西, 好像是可以的.



    xingda920813
        7
    xingda920813  
       Jan 12, 2017
    xuhaoyangx
        8
    xuhaoyangx  
    OP
       Jan 12, 2017
    @xingda920813 局对布局不行,等下我也试下你这个
    xuhaoyangx
        9
    xuhaoyangx  
    OP
       Jan 12, 2017
    绝对布局
    xingda920813
        10
    xingda920813  
       Jan 12, 2017
    但是很想不通, CardView 本身就是一个 FrameLayout, 而且在 Android 5.0 以上, 相当于并没有重写 onMeasure 方法 (onMeasure() = super.onMeasure()), 为什么直接用 CardView 作为 itemView 就不行.
    xuhaoyangx
        11
    xuhaoyangx  
    OP
       Jan 12, 2017
    @xingda920813 我也是这么觉得,很恶心的玩意
    xuhaoyangx
        12
    xuhaoyangx  
    OP
       Jan 12, 2017
    @xingda920813 addView(view,params)这个函数的问题~,这里添加 params 没有作用
    lee015
        13
    lee015  
       Jan 13, 2017 via Android
    ViewUtils.inflate 里面 layoutId 判断,不等于 0 就是有效的 id 了。
    xuhaoyangx
        14
    xuhaoyangx  
    OP
       Jan 13, 2017
    @lee015 啥?
    About     Help     Advertise     Blog     API     FAQ     Solana     5156 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 116ms UTC 09:45 PVG 17:45 LAX 02:45 JFK 05:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86