一些Moto 360不加载圆形布局

时间:2014-10-14 20:05:47

标签: android wear-os

我写了一个在圆形和方形手表上运行的应用程序,有两个布局和一个watchViewStub。 由于moto 360在欧洲销售,我有很多报道说Moto 360没有加载圆形布局。使用模拟器,即使我按照此处的说明更改语言环境,我也无法重现此行为:https://developer.android.com/guide/topics/resources/localization.html#testing 所以我想这是我的代码......

以下是我实施它的方式:

<android.support.wearable.view.WatchViewStub
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/watch_view_stub"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:rectLayout="@layout/rect_activity_camera"
app:roundLayout="@layout/round_activity_camera">

然后在片段中,我给WatchViewStub充气

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    final WatchViewStub stub = (WatchViewStub) getView().findViewById(R.id.watch_view_stub);
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
        @Override
        public void onLayoutInflated(WatchViewStub stub) {
            ...
        } 
    }

片段用于FragmentViewPager / FragmentGridPagerAdapter。 直到我得到一个Moto 360,关于我如何调试它的任何想法?

修改

Wear Sdk中的WatchViewStub示例有两种不同的行为取决于语言设置,所以我填写此问题:https://code.google.com/p/android/issues/detail?id=77642

重要

此问题在不同的帖子中讨论。为避免重复更新的信息,只会更新Google代码上的问题,并且一旦问题得到解决,我就会完成此帖子: https://code.google.com/p/android/issues/detail?id=77642

2 个答案:

答案 0 :(得分:1)

由于未正确使用WatchViewStub导致布局膨胀存在许多问题。我没有看到上面足够的代码来确切知道,但一个常见的问题是当您为监视插入注册监听器时:

    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);

            return windowInsets;
        }
    });

我看到人们忘记返回windowInsets但忘记调用stub.onApplyWindowInsets()的情况。这具有给出方形布局而不是圆形布局的效果。

其他问题是由于忘记将相同的XML元素放入round.xml中的square.xml而导致的。

您在adb logcat中收到的错误消息是什么?

答案 1 :(得分:1)

我有一些关于这个错误的信息。

在出厂重置后与手机配对时,手表切换语言会触发此问题。您可以通过在可穿戴设备上选择与在手机上使用相同的语言来避免此问题,以便在设备配对后不会发生任何更改。

解决问题的说明:

  1. 恢复出厂设置Moto 360。
  2. 当可穿戴设备重新启动时,它会询问您想要使用哪种语言。选择您在手机上使用的语言(不要选择默认的英语)
  3. 在手机上,启动Android Wear随播应用,然后从溢出菜单中选择“与新的可穿戴设备配对”选项。
  4. 将手机与Moto 360配对。