2014-09-20 64 views
6

可惜Moto360不利用欧洲尚未...回合Android Wear模拟器使用矩形布局

我跑一个回合Android Wear模拟器,这是工作的罚款。

然而,当我运行Android Wear活动运行回合模拟器时(它使用WatchViewStub)所使用的布局是rect_activy_layout而不是圆形布局

任何人有这个问题还是解决?

谢谢

+0

我实际上面临着同样的问题,我的摩托360我很感兴趣,知道什么别人没有解决这个问题。 – kentarosu 2014-09-21 20:14:25

+0

订阅这个问题。 作为一个丑陋的解决方法,你可以暂时设置你的圆形布局,像这样: 'app:rectLayout =“@ layout/round_activity_my'” 它会运行你的圆形布局,认为它是作为矩形提供的... – 2014-09-23 10:11:12

+0

I我一直在做这个非常“廉价”的工作。我的代码对于rect来说都很好,所以在我承诺之后,我只是用圆形布局样式代码覆盖我的矩形布局,一旦我很高兴,我将我的圆形布局代码复制并粘贴到实际的round_layout_activity中,然后还原修改的rect_layout文件。 Blah ... – 2014-09-25 10:21:55

回答

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()。这具有提供方形布局而不是圆形布局的效果。

而且,有一个与内置于SDK的AndroidWearRound模拟器中的错误。其中有三个,如果你创建了错误的,它实际上会创建一个方形模拟器。确保你有三个模拟器,你选择第二个之一。此错误已在最新的Android SDK Tools 23.0.4中修复,但可能是您的版本较旧。

你能告诉我们你周围的WatchViewStub做的代码?

0

一个简单的解决方法是升级穿圆领模拟器API级别22,现在是出来。一般来说,我发现在API级别21的Wear Round模拟器有一些bug的行为,但到目前为止还没有发现在API级别22的Round模拟器有任何问题。我认为这将解决这个问题,因为我有同样的问题我自己在某个时候(这不是模拟器的设置问题)。