指定移动和磨损模块的布局

时间:2016-03-21 15:12:01

标签: android android-layout android-studio mobile wear-os

我从零开始为移动设备(minSdkVersion at 9)和wear(minSdkVersion at 20)模块创建了一个新项目,我想知道如何指定磨损和磨损方形的布局(我需要稍微使用WatchViewStub类吗?)设备。就像,我知道数据从掌上电脑发送到磨损,但我如何配置它,以便应用程序在磨损和磨损方形布局上运行(特别是仅使用XML文件)?

这是我的手机\ ... \ 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">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Hello mobile world!"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>

至于wear模块下的布局,一切都是默认的(我没有修改任何东西),因此包括但不限于通过实现WatchViewStub类的inflater,用于圆形和方形屏幕的XML应输出“Hello Square World!”和“Hello Round World!”,分别等等。

这是我原状的磨损\ ... \ MainActivity:

package dpark.gameoflife;

import android.app.Activity;
import android.os.Bundle;
import android.support.wearable.view.WatchViewStub;
import android.widget.TextView;

public class MainActivity extends Activity {
    private TextView mTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
        stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
            @Override
            public void onLayoutInflated(WatchViewStub stub) {
                mTextView = (TextView) stub.findViewById(R.id.text);
            }
        });
    }
}

...然后这就是我从磨损虚拟仿真器得到的东西:

enter image description here

为什么上面的圆形虚拟仿真器不会出现圆形?

enter image description here

谢谢,我非常感谢。

1 个答案:

答案 0 :(得分:1)

资源限定符layout-roundlayout-square仅在SDK级别23中引入。要针对圆形和方形显示使用不同布局定位较早的级别,您需要使用WatchViewStubBoxInsetLayoutdocumented here

根据您的发布时间表,您也可以在可穿戴方面定位SDK 23。 23已经出现在大多数手表上了,谷歌已经表示所有Wear设备都会很快得到它(ish)。

至于你的圆形模拟器显示方形...没有很好的解释,但他们有时会这样做。重新启动它几次,删除并重新创建它,如果必须的话,最终它应该自行解决。