我写了一个在圆形和方形手表上运行的应用程序,有两个布局和一个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
答案 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)
我有一些关于这个错误的信息。
在出厂重置后与手机配对时,手表切换语言会触发此问题。您可以通过在可穿戴设备上选择与在手机上使用相同的语言来避免此问题,以便在设备配对后不会发生任何更改。
解决问题的说明: