Dynamically size Nativescript ContentView within ScrollView based on device height





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







1















I have a Nativescript Vue component template defined as:



<ScrollView>
<StackLayout>
<ContentView ref="mapContainer" height="500" width="100%">
<Mapbox
accessToken="my access key"
mapStyle="outdoors-v9"
hideCompass="true"
zoomLevel="10.2" ,
latitude="51.949266"
longitude="-12.183571"
showUserLocation="true"
disableZoom="true"
disableRotation="true"
disableScroll="true"
disableTilt="true"
@mapReady="onMapReady($event)">
</Mapbox>
</ContentView>
<Label text="A test label"/>
</StackLayout>
</ScrollView>


When the component is mounted, I want to set the height of mapContainer to roughly 75% of the screen height. To do so, I have:



export default {
name: "MyPage",

mounted () {
this.$refs.mapContainer.height = platform.screen.mainScreen.heightDIPs
}

...

}


But this does nothing, and the ContentView remains at 500dp tall.



height is meant to be a setter, but I figure I'm missing a redraw (?) to get this change to take effect, but not sure how?










share|improve this question





























    1















    I have a Nativescript Vue component template defined as:



    <ScrollView>
    <StackLayout>
    <ContentView ref="mapContainer" height="500" width="100%">
    <Mapbox
    accessToken="my access key"
    mapStyle="outdoors-v9"
    hideCompass="true"
    zoomLevel="10.2" ,
    latitude="51.949266"
    longitude="-12.183571"
    showUserLocation="true"
    disableZoom="true"
    disableRotation="true"
    disableScroll="true"
    disableTilt="true"
    @mapReady="onMapReady($event)">
    </Mapbox>
    </ContentView>
    <Label text="A test label"/>
    </StackLayout>
    </ScrollView>


    When the component is mounted, I want to set the height of mapContainer to roughly 75% of the screen height. To do so, I have:



    export default {
    name: "MyPage",

    mounted () {
    this.$refs.mapContainer.height = platform.screen.mainScreen.heightDIPs
    }

    ...

    }


    But this does nothing, and the ContentView remains at 500dp tall.



    height is meant to be a setter, but I figure I'm missing a redraw (?) to get this change to take effect, but not sure how?










    share|improve this question

























      1












      1








      1








      I have a Nativescript Vue component template defined as:



      <ScrollView>
      <StackLayout>
      <ContentView ref="mapContainer" height="500" width="100%">
      <Mapbox
      accessToken="my access key"
      mapStyle="outdoors-v9"
      hideCompass="true"
      zoomLevel="10.2" ,
      latitude="51.949266"
      longitude="-12.183571"
      showUserLocation="true"
      disableZoom="true"
      disableRotation="true"
      disableScroll="true"
      disableTilt="true"
      @mapReady="onMapReady($event)">
      </Mapbox>
      </ContentView>
      <Label text="A test label"/>
      </StackLayout>
      </ScrollView>


      When the component is mounted, I want to set the height of mapContainer to roughly 75% of the screen height. To do so, I have:



      export default {
      name: "MyPage",

      mounted () {
      this.$refs.mapContainer.height = platform.screen.mainScreen.heightDIPs
      }

      ...

      }


      But this does nothing, and the ContentView remains at 500dp tall.



      height is meant to be a setter, but I figure I'm missing a redraw (?) to get this change to take effect, but not sure how?










      share|improve this question














      I have a Nativescript Vue component template defined as:



      <ScrollView>
      <StackLayout>
      <ContentView ref="mapContainer" height="500" width="100%">
      <Mapbox
      accessToken="my access key"
      mapStyle="outdoors-v9"
      hideCompass="true"
      zoomLevel="10.2" ,
      latitude="51.949266"
      longitude="-12.183571"
      showUserLocation="true"
      disableZoom="true"
      disableRotation="true"
      disableScroll="true"
      disableTilt="true"
      @mapReady="onMapReady($event)">
      </Mapbox>
      </ContentView>
      <Label text="A test label"/>
      </StackLayout>
      </ScrollView>


      When the component is mounted, I want to set the height of mapContainer to roughly 75% of the screen height. To do so, I have:



      export default {
      name: "MyPage",

      mounted () {
      this.$refs.mapContainer.height = platform.screen.mainScreen.heightDIPs
      }

      ...

      }


      But this does nothing, and the ContentView remains at 500dp tall.



      height is meant to be a setter, but I figure I'm missing a redraw (?) to get this change to take effect, but not sure how?







      nativescript nativescript-vue






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 26 '18 at 15:09









      codinghandscodinghands

      77521127




      77521127
























          1 Answer
          1






          active

          oldest

          votes


















          2














          In order to access the ContentView via refs, you must use .nativeView property.



          this.$refs.mapContainer.nativeView.height = platform.screen.mainScreen.heightDIPs


          Also you don't have to calculate the height but simply set the height in percentage (70%) instead of fixed value (500) Or use a GridLayout with 7 partition (7*).






          share|improve this answer
























          • Works perfectly, thank you. For some reason the Mapbox component requires a fixed height within a ScrollView otherwise it doesn't render.

            – codinghands
            Nov 26 '18 at 16:07












          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53484014%2fdynamically-size-nativescript-contentview-within-scrollview-based-on-device-heig%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          2














          In order to access the ContentView via refs, you must use .nativeView property.



          this.$refs.mapContainer.nativeView.height = platform.screen.mainScreen.heightDIPs


          Also you don't have to calculate the height but simply set the height in percentage (70%) instead of fixed value (500) Or use a GridLayout with 7 partition (7*).






          share|improve this answer
























          • Works perfectly, thank you. For some reason the Mapbox component requires a fixed height within a ScrollView otherwise it doesn't render.

            – codinghands
            Nov 26 '18 at 16:07
















          2














          In order to access the ContentView via refs, you must use .nativeView property.



          this.$refs.mapContainer.nativeView.height = platform.screen.mainScreen.heightDIPs


          Also you don't have to calculate the height but simply set the height in percentage (70%) instead of fixed value (500) Or use a GridLayout with 7 partition (7*).






          share|improve this answer
























          • Works perfectly, thank you. For some reason the Mapbox component requires a fixed height within a ScrollView otherwise it doesn't render.

            – codinghands
            Nov 26 '18 at 16:07














          2












          2








          2







          In order to access the ContentView via refs, you must use .nativeView property.



          this.$refs.mapContainer.nativeView.height = platform.screen.mainScreen.heightDIPs


          Also you don't have to calculate the height but simply set the height in percentage (70%) instead of fixed value (500) Or use a GridLayout with 7 partition (7*).






          share|improve this answer













          In order to access the ContentView via refs, you must use .nativeView property.



          this.$refs.mapContainer.nativeView.height = platform.screen.mainScreen.heightDIPs


          Also you don't have to calculate the height but simply set the height in percentage (70%) instead of fixed value (500) Or use a GridLayout with 7 partition (7*).







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 26 '18 at 15:43









          ManojManoj

          7,70421024




          7,70421024













          • Works perfectly, thank you. For some reason the Mapbox component requires a fixed height within a ScrollView otherwise it doesn't render.

            – codinghands
            Nov 26 '18 at 16:07



















          • Works perfectly, thank you. For some reason the Mapbox component requires a fixed height within a ScrollView otherwise it doesn't render.

            – codinghands
            Nov 26 '18 at 16:07

















          Works perfectly, thank you. For some reason the Mapbox component requires a fixed height within a ScrollView otherwise it doesn't render.

          – codinghands
          Nov 26 '18 at 16:07





          Works perfectly, thank you. For some reason the Mapbox component requires a fixed height within a ScrollView otherwise it doesn't render.

          – codinghands
          Nov 26 '18 at 16:07




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53484014%2fdynamically-size-nativescript-contentview-within-scrollview-based-on-device-heig%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Wiesbaden

          To store a contact into the json file from server.js file using a class in NodeJS

          Marschland