账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    小程序里,如何让组件最外层的view的高度自适应?
    29
    0

    在小程序的项目里,想做一个重用的view,用组件去实现,里面的高度想在用的时候指定,应该怎么写?

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)
    component.wxml

    <view class="container">
        <view class="v1" style="height:20%"> </view>
        <view class="v1" style="height:30%"> </view>
        <view class="v1" style="height:30%"> </view>
        <view class="v1" style="height:20%"> </view>
    </view>

    index.wxml

    <view>
        <componentView style="height: 120rpx">
            
        </componentView>
    </view>

    你期待的结果是什么?实际看到的错误信息又是什么?

    结果不是高度为0, 就是子view的比例出不来。

    求解?!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 向前冲 普通会员 1楼

      在微信小程序中,为了让组件的最外层view的高度自适应,可以通过使用自适应布局(Adaptive Layout)或自适应流布局(Adaptive Flow Layout)来实现。

      1. 自适应布局:

      使用自适应布局,将视图和布局元素都放在布局的根元素上,然后将视图的大小设置为布局元素的宽度,从而实现视图的高度自适应。

      在微信小程序中,自适应布局的实现方式如下:

      • 在你的组件中,创建一个Layout或AdaptiveLayout类,并在其中实现自适应布局的方法。
      • 在Layout或AdaptiveLayout中,设置视图和布局元素的宽度和高度,如viewWidth: 100和viewHeight: 100。
      • 使用viewWidth和viewHeight属性来设置视图的高度。
      • 使用layoutWidth和layoutHeight属性来设置布局元素的宽度和高度。

      例如:

      ```javascript class MyComponent extends React.Component { constructor(props) { super(props); this.state = { viewWidth: 100, viewHeight: 100, layoutWidth: 200, layoutHeight: 200, }; }

      componentDidMount() { this.checkLayout(); }

      checkLayout() { // 在这里,你可以检查布局元素的宽度和高度是否已经正确设置 // 如果没有设置,你可以重新设置视图的宽度和高度 // 如果已经设置了,你可以继续检查布局元素的宽度和高度 }

      render() { return ( {/ 在这里,你可以设置视图的内容 /} ); } } ```

      1. 自适应流布局:

      使用自适应流布局,将视图和布局元素都放在流的根元素上,然后将视图的大小设置为流的宽度,从而实现视图的高度自适应。

      在微信小程序中,自适应流布局的实现方式如下:

      • 在你的组件中,创建一个Stream或AdaptiveStream类,并在其中实现自适应流布局的方法。
      • 在Stream或AdaptiveStream中,设置视图和流的宽度和高度,如viewWidth: 100和viewHeight: 100。
      • 使用viewWidth和viewHeight属性来设置视图的高度。
      • 使用streamWidth和streamHeight属性来设置流的宽度和高度。

      例如:

      ```javascript class MyComponent extends React.Component { constructor(props) { super(props); this.state = { viewWidth: 100, viewHeight: 100, streamWidth: 200, streamHeight: 200, }; }

      componentDidMount() { this.checkStream(); }

      checkStream() { // 在这里,你可以检查流的宽度和高度是否已经正确设置 // 如果没有设置,你可以重新设置视图的宽度和高度 // 如果已经设置了,你可以继续检查流的宽度和高度 }

      render() { return ( {/ 在这里,你可以设置流的内容 /} ); } } ```

      以上两种方式都可以让你的组件的最外层view的高度自适应。你可以根据你的实际需求选择合适的方式。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部