我有一个Android佩戴应用程序但是当我在圆形手表(Moto 360)上运行它而不是显示的圆形布局时,矩形的是。
当创建新的磨损项目时,Android Studio会创建所有必要的布局文件,以使其能够根据需要自动加载矩形布局我们的圆形布局,除了矩形或圆形布局文件本身。特别是我没有更改activity_main.xml,也没有更改rect或round活动的名称,也没有更改活动中的加载方式。
这是activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.wearable.view.WatchViewStub
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/watch_view_stub"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:rectLayout="@layout/rect_activity_main"
app:roundLayout="@layout/round_activity_main"
tools:context=".MainActivity"
tools:deviceIds="wear"></android.support.wearable.view.WatchViewStub>
这里是round_activity_main.xml的开头,没有必要全部显示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context=".MainActivity" tools:deviceIds="wear_round">
<RelativeLayout
android:layout_width="fill_parent"
为了完整性,这里是rect_activity_main.xml的开头:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:orientation="vertical"
tools:context=".MainActivity" tools:deviceIds="wear_square"
android:clickable="true">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="60dp"
以下是在活动的onCreate()
中加载布局的方法 setContentView(R.layout.activity_main);
WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener()
{
@Override
public void onLayoutInflated(WatchViewStub stub)
{
...
就我所知,一切都应该如此,就像我提到的那样,应该是因为我还没有改变Android Studio所创造的内容。 有人知道问题是什么吗?
答案 0 :(得分:1)
首先查看此答案,我会解释WindowInsets
的送达方式:Can you use a WatchViewStub in a GridViewPager for Android Wear?
之后:
您是否在活动中使用此内容?
您是否设置了一些OnApplyWindowInsetsListener?
尝试在onCreate中调用stub.requestApplyInsets()。
编辑:
从评论中的讨论和进一步调查。您似乎需要在主题上设置<item name="windowOverscan">true</item>
,以便将WindowInsets
发送给您的观看次数。
答案 1 :(得分:1)
如果您想要一个简单的解决方案,而不是WindowInsets
,那么您应该看看这个库:https://github.com/tajchert/ShapeWear
只需拨打ShapeWear.initShapeWear(this);
一次即可进行初始化,就是这样 - 只需随时致电getShape()
。