【问题标题】:How to attach UrhoSharp Surface to LinearLayout in ViewGroup class如何在 ViewGroup 类中将 UrhoSharp Surface 附加到 LinearLayout
【发布时间】:2019-09-06 10:26:48
【问题描述】:

我正在尝试将 UrohSharp Surface 添加到继承自 ViewGroup 的类中的 LinearLayout(放置在另一个视图的左下角)。

大多数显示在 Android 中实现 UrhoSharp 的示例都是直接在主 Activity 中完成的,如下所示:

protected override async void OnCreate(Bundle savedInstanceState)
{
            base.OnCreate(savedInstanceState);
            var mLayout = new AbsoluteLayout(this);
            surface = UrhoSurface.CreateSurface(this);// (this, , true);
            mLayout.AddView(surface);

            SetContentView(mLayout);

            dronModel = await surface.Show<DroneScene>(new ApplicationOptions("Data"));
}

或与布局文件中的一个元素:

    <Urho.Droid.UrhoSurfacePlaceholder
        android:id="@+id/DroidModelId"
        android:background="@color/colorPrimary"
        android:layout_height="300dp"
        android:layout_width="match_parent"/>

然后像这样替换它:

public override async void OnViewCreated(Android.Views.View view, Bundle savedInstanceState)
{
            base.OnViewCreated(view, savedInstanceState);

            surface = UrhoSurface.CreateSurface(base.Activity);
            UrhoSurfacePlaceholder parent = view.FindViewById<UrhoSurfacePlaceholder>(Resource.Id.DroidModelId);
            parent.AddView(surface);
            droneModel = await surface.Show<DroneModel>(new ApplicationOptions("Data"));

但是,我需要做的是创建某种视图来封装 Urho 代码并以如下方式引用它:

    <My.App.Droid.Views.Drone.Model.DroneModelView
        android:id="@+id/DroneModel2"
        android:layout_marginTop="32dp"
        android:layout_marginLeft="32dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_width="55dp"
        android:layout_height="55dp"
        android:background="@null"/>

然后从主活动视图中抓取它:

droneModelView = FindViewById<DroneModelView>(Resource.Id.DroneModel2);

由于 UrhoSurface.CreateSurface 需要 Activity 对象,我不确定如何最好地解决这个问题 - 据我所知,没有“干净”的方法可以从继承 ViewGroup 的类中访问活动?最终目标是在包含许多以类似方式引用的其他元素的视图中显示 3D 模型。

【问题讨论】:

    标签: android xamarin xamarin.android urhosharp urho3d


    【解决方案1】:

    这是一个简单的例子,它在CustomView中将RatingBar添加到LinearLayout,你可以参考它,将RatingBar更改为你的UrohSharp Surface

    https://stackoverflow.com/a/57764198/10768653

    【讨论】:

    • 谢谢,给了我这个主意。
    猜你喜欢
    • 2011-04-23
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    相关资源
    最近更新 更多