我写了一个在圆形和方形 watch 上运行的应用程序,有两个布局和一个 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">

然后在一个 fragment 中我膨胀 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) {
            ...
        }
    }

该 fragment 用于 FragmentViewPager/FragmentGridPagerAdapter。
在我获得 Moto 360 之前,有什么关于如何调试的想法吗?

编辑

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

重要的

这个问题在不同的帖子中讨论过。为避免重复更新的信息,只会更新谷歌代码上的问题,一旦问题得到解决,我将完成这篇文章:
https://code.google.com/p/android/issues/detail?id=77642

最佳答案

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

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

其他问题是由于忘记将与 square.xml 相同的 XML 元素放入 round.xml 引起的。

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

关于android - 某些 Moto 360 无法加载圆形布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26369375/

10-12 01:48
查看更多