我是安卓玩家的一个菜鸟,到目前为止一直很好。 我已成功创建了我的第一个hello world应用程序并在我的LG G手表R上运行。
我遇到的问题如下: 我正在开发人员网站中使用WatchViewStub,WatchViewStub假设检测应用程序运行的屏幕类型。 但显然WatchViewStub只做了它想做的一半,这意味着应用程序使用正确的文本使用正确的xml文件“round_activity”进行部署,但它仍然在设备上以方形布局显示。
据我所知,WatchViewStub假设在检测圆形显示时自动修复文本。但在我的情况下,它从右侧round_activity xml文件中获取正确的文本,但它以方形格式显示。 这是我的代码:
MainActivity:
public class MainActivity extends Activity {
public TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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) {
// Now you can access your views
mTextView = (TextView) stub.findViewById(R.id.text);
}
});
}
}
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.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">
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_round" />
</RelativeLayout>
square_activity.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">
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_square" />
</RelativeLayout>
我正确显示我的hello圆形世界文本的唯一方法是将其填充到xml中心。
有人知道为什么会这样吗? 提前谢谢你们的帮助
答案 0 :(得分:0)
更改round_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.wearable.view.BoxInsetLayout
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:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"
tools:deviceIds="wear_square">
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_round" />
</RelativeLayout>
</android.support.wearable.view.BoxInsetLayout>
答案 1 :(得分:0)
同一手表出现同样问题...通过将Theme
更改为默认值来解决此问题。圆形/方形检测由主题完成。
确保您的清单中的主题是:
android:theme="@android:style/Theme.DeviceDefault"
答案 2 :(得分:-1)
您可以使用可穿戴支持库中的BoxInsetLayout:
BoxInsetLayout是一个屏幕形状感知的FrameLayout,它可以使用layout_boxattribute将其子项放在圆形屏幕的中心方框中。