为了账号安全,请及时绑定邮箱和手机立即绑定

动态更改高度约束布局

动态更改高度约束布局

桃花长相依 2021-10-20 11:40:19
情况:[x] 列表项/切换标题子列表项子列表项[ ] 列表项/切换标题如何根据复选框是否选中来动态更改第一个列表项的高度?(如果复选框被选中,它会打开一个子列表)那么如何通过编码更改约束布局的高度?PS:我使用的是 AndroidStudio 3.2
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

您不需要动态更改高度。只需将子列表放在类似于 LinearLayout 的 ViewGroup 中,View.VISIBLEView.GONE在复选框更改之间切换可见性。


查看完整回答
反对 回复 2021-10-20
?
慕斯王

TA贡献1864条经验 获得超2个赞

您可以使用以下代码更改每个视图的高度或宽度 :


private void changeIncludes (View newView ){

        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) newView.getLayoutParams();

        // change width and height to 50

        params.height = 50 ;

        params.width = 50;

        newView.setLayoutParams(params);

    }

或从其他视图大小使用:


private void changeIncludes (View current , View newView ){

        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) newView.getLayoutParams();

        params.height = current.getLayoutParams().height;

        params.width = current.getLayoutParams().width;

        newView.setLayoutParams(params);

    }

如果宽度或高度没有改变,你应该刷新页面。


这些代码对我有用,我希望对你也有用。


checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                if (isChecked){

                    changeIncludes(buttonView,50,100);

                }else{

                    changeIncludes(buttonView,30,100);

                }

            }

        });


private void changeIncludes (View newView , int h , int w){

        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) newView.getLayoutParams();

        // change width and height to 50

        params.height = h ;

        params.width = w;

        newView.setLayoutParams(params);

    }

我将此代码用于复选框,但如果您想用于列表项,则只需更改侦听器和界面。


查看完整回答
反对 回复 2021-10-20
  • 3 回答
  • 0 关注
  • 220 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信