圆形Android Wear模拟器正在使用矩形布局

6

很遗憾,Moto360目前还无法在欧洲使用...

我正在运行一个圆形Android Wear模拟器,一切正常。

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

还有其他人遇到这个问题或在运行圆形模拟器时解决了吗?

谢谢


我在我的Moto 360上也遇到了同样的问题。我很想知道其他人是如何解决这个问题的。 - gatlingxyz
订阅此问题。作为一个丑陋的解决方法,您可以暂时将您的圆形布局设置为以下内容:app:rectLayout="@layout/round_activity_my",这样它就会运行您的圆形布局,认为它是以矩形布局提供的... - Vladyslav Matviienko
我一直在以非常“廉价”的方式进行工作。我的代码对rect布局都很好,所以在提交后,我只是用圆形布局风格的代码覆盖我的rect布局,然后一旦满意,我将我的圆形布局代码复制并粘贴到实际的round_layout_activity文件中,并还原修改过的rect_layout文件。唉... - Java Guy
AVD设置向导在SDK中用于圆形手表仿真存在缺陷。你的问题很可能是它在底层使用了一个方形设备。要解决这个问题,请参见此答案 - Lo-Tan
1
@kentarosu WatchViewStub类应该与Moto 360设备配合良好。在使用真实设备时,Android Wear在圆形手表上会同时填充正方形和圆形布局,这可能导致您的问题。在AOSP中有一个已经打开的错误,在那个票据中有一个指向StackOverflow帖子的链接,其中提供了解决此问题的方法。 - Lo-Tan
显示剩余2条评论
2个回答

1

在填充布局时,如果没有正确使用WatchViewStub,会出现许多问题。我没有看到任何代码,无法确定具体情况,但一个常见问题是当您注册监听手表插图以便在onApplyWindowInsets处理程序中检查其是否为圆形或正方形时:

    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()。这会导致布局变成方形而非圆形。
此外,AndroidWearRound模拟器内置于SDK中存在一个bug。有三个模拟器,如果你选择了错误的模拟器,它会实际上创建一个方形模拟器。请确保如果你有三个模拟器,选择第二个。这个bug已经在最新的Android SDK工具23.0.4中修复,但是可能你使用的是旧版本。
你能展示一下你在WatchViewStub周围的代码吗?

0
一个简单的解决方法是将Wear Round模拟器升级到现在的API 22级。我一般发现API 21级的Wear Round模拟器有些错误行为,而到目前为止,我还没有发现任何API 22级的Round模拟器问题。我认为这将解决这个问题,因为我自己曾经遇到过同样的问题(并不是模拟器设置问题)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接