圆形Android Wear Emulator使用的是rect布局

圆形Android Wear Emulator使用的是rect布局,android,android-emulator,wear-os,Android,Android Emulator,Wear Os,不幸的是,Moto360还不能应用于欧洲 我正在运行一个圆形Android Wear模拟器,它运行得很好 但是,当我运行Android Wear活动(使用WatchViewStub)时,使用的布局是rect_activy_布局,而不是圆形布局 其他人在运行Round Emulator时有此问题或已解决此问题吗 谢谢由于未正确使用WatchViewStub,导致布局膨胀的问题很多。我没有看到任何代码可以确切知道,但一个常见的问题是,当您为watch Insetts注册侦听器时,您可以检查OnApp

不幸的是,Moto360还不能应用于欧洲

我正在运行一个圆形Android Wear模拟器,它运行得很好

但是,当我运行Android Wear活动(使用WatchViewStub)时,使用的布局是rect_activy_布局,而不是圆形布局

其他人在运行Round Emulator时有此问题或已解决此问题吗


谢谢

由于未正确使用WatchViewStub,导致布局膨胀的问题很多。我没有看到任何代码可以确切知道,但一个常见的问题是,当您为watch Insetts注册侦听器时,您可以检查OnApplyWindowInsetts处理程序中的侦听器是圆形还是方形:

    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
    stub.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
        @Override
        public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets) {
            // Need to also call the original insets since we have overridden the original                                                  
            // https://developer.android.com/reference/android/view/View.OnApplyWindowInsetsListener.html                                   
            stub.onApplyWindowInsets(windowInsets);

            // this is where you would check the WindowInsets for isRound()

            return windowInsets;
        }
    });
我看到人们忘记返回windowInsets,或者忘记调用stub.onApplyWindowInsets()的情况。这样做的效果是提供方形布局,而不是圆形布局

此外,SDK中内置的AndroidWearRound仿真器也有一个bug。其中有三个,如果您创建了错误的一个,它实际上会创建一个方形仿真器。如果有三个模拟器,请确保选择第二个。最新的Android SDK Tools 23.0.4中已经修复了此错误,但可能是因为您的版本较旧


你能告诉我们你在WatchViewStub上做的代码吗?

一个简单的修复方法是将Wear Round emulator升级到API级别22,现在已经发布了。我通常发现API级别21的Wear Round emulator存在一些错误行为,而到目前为止,还没有发现API级别22的Round emulator存在任何问题。我认为这将解决这个问题,因为我自己在某个时候也遇到了同样的问题(这不是模拟器的安装问题)

事实上,我在我的Moto 360上也遇到了同样的问题。我很想知道其他人做了什么来解决这个问题。订阅这个问题。作为一种难看的解决方法,您可以暂时像下面这样设置您的圆形布局
app:rectlaway=“@layout/round\u activity\u my
”,它会运行您的圆形布局,认为它是作为一个rect布局提供的……我一直在以极其“便宜”的方式解决这个问题。我的代码适用于rect,因此在我提交之后,我将使用圆形布局样式代码覆盖我的rect布局,一旦我满意,我将圆形布局代码复制并粘贴到实际的圆形布局活动中,并还原修改后的rect布局文件。诸如此类……AVD安装向导在用于轮表模拟的SDK中有缺陷。你的问题很可能是,它在引擎盖下使用了一个方形装置。要解决这个问题,请参阅@kentarosu,WatchViewStub类应该可以与Moto360单元配合使用。有一种情况是,当使用真实设备时,圆形手表上的AndroidWear会使方形和圆形布局膨胀,这可能会导致您的问题。对此有一个解决方案,在该票据中有一个指向StackOverflow post的链接,该邮件具有解决该问题的方法。