How to render a View to the right of parent node in ARCore sceneform

Mat*_*haN 5 android arcore sceneform

Using ViewRenderable I am rendering layout file. I gave fixed width and height for the layout file

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="500dp"
    android:layout_height="50dp"
    android:background="@android:color/transparent">
// Add design
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

Now I am building layout as ViewRenderable

 // Build a renderable from a 2D View.
        CompletableFuture<ViewRenderable> meterOne =
                ViewRenderable.builder().setView(this, R.layout.meter).build();

     CompletableFuture.allOf(circle,
                meterOne, meterTwo)
                .handle(
                        (notUsed, throwable) -> {
                            // When you build a Renderable, Sceneform loads its resources in the background while
                            // returning a CompletableFuture. Call handle(), thenAccept(), or check isDone()
                            // before calling get().

                            if (throwable != null) {
                                DemoUtils.displayError(this, "Unable to load renderable", throwable);
                                return null;
                            }

                            try {
 Meters.add(meterOne.get());
 } catch (InterruptedException | ExecutionException ex) {
                                DemoUtils.displayError(this, "Unable to load renderable", ex);
                            }
Run Code Online (Sandbox Code Playgroud)

After that I need to render this ViewRenderable Object into the node

        Node sunVisual = new Node();
        sunVisual.setParent(sun);
        sunVisual.setRenderable(Meters.get(0)); // View
        sunVisual.setLocalScale(new Vector3(0.5f, 0.5f, 0.5f));
Run Code Online (Sandbox Code Playgroud)

Now I need to add another node to the right of sunVisual node

            Node node = new Node();
            node.setParent(sunVisual );
            node.setRenderable(Meters.get(1));
            node.setLocalPosition(new Vector3(2.0f, 0.0f, 0.0f)); 
Run Code Online (Sandbox Code Playgroud)

This code works well on google pixel 2 devices but I am getting small space in nokia x6 device

Google pixel 2 screenshot谷歌像素 2 图像

Nokia x6 screenshot诺基亚 x6 截图

How to get the rendered view width and height in meter?

How to set local position to the right of parent node based on the parent node rendered view size

Help me to fix this issue thanks in advance

Mat*_*haN 6

我找到了解决上述问题的解决方案。

    Node node = new Node();
    node.setParent(parent);
    Renderable renderable = Meters.get(i);
    renderable.setShadowReceiver(false);
    renderable.setShadowCaster(false);
 ((ViewRenderable) renderable).setSizer(new FixedWidthViewSizer(2));
    node.setRenderable(renderable);
    node.setLocalPosition(new Vector3(2.0f, 0.0f, 0.0f));
Run Code Online (Sandbox Code Playgroud)

我们可以使用 setSizer 来设置宽度和高度 ViewRendarable

 ((ViewRenderable) renderable).setSizer(new FixedWidthViewSizer(2));
Run Code Online (Sandbox Code Playgroud)