我正在尝试通过启动活动从支持库中使用Andoird Wear的DelayedConfirmationView。
活动在OnCreate中有这个:
setContentView(R.layout.delayed_main);
mDelayed = (DelayedConfirmationView) findViewById(R.id.delay);
mDelayed.setTotalTimeMs(4000);
//mDelayed.setImageDrawable(getResources().getDrawable(R.drawable.close_button));
mDelayed.setListener(new DelayedConfirmationView.DelayedConfirmationListener() {
...
我的delayed_main有这个:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/android.support.wearable.view"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DelayedConfirmActivity">
<android.support.wearable.view.DelayedConfirmationView
android:id="@+id/delay"
app:circle_border_color="#2299ee"
app:circle_border_width="5sp"
app:circle_color="#222222"
app:circle_padding="5sp"
app:circle_radius="80sp"
app:update_interval="100"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
我的OnCreate中没有异常,但我得到的只是一个空白的白色屏幕。我试过setImageDrawable。还尝试了传入一个新的DelayedConfirmationView实例的setContentView(View)。还尝试删除上述XML中的所有app:属性(希望会应用一些合理的默认值)。文档没有给出任何关于期望或如何使用的例子。
有什么想法吗?
答案 0 :(得分:1)
sdk中有一个名为DelayedConfirmation
的示例项目。如果您在SDK Manager中下载了样本 - 您可以在此处找到:sdk\samples\android-20\wearable\DelayedConfirmation
main_activity.xml
档案的一部分:
<android.support.wearable.view.DelayedConfirmationView
android:id="@+id/delayed_confirmation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_launcher"
app:circle_color="@color/blue"
app:circle_radius="@dimen/circle_radius"
app:circle_radius_pressed="@dimen/circle_radius_pressed"
app:circle_padding="@dimen/circle_padding"
app:circle_border_width="@dimen/circle_border_normal_width"
app:circle_border_color="@color/white"/>
所以这里唯一的额外属性是:
app:circle_radius_pressed="@dimen/circle_radius_pressed"
在MainActivity.java类中,与您设置的行几乎相同:
delayedConfirmationView = (DelayedConfirmationView) findViewById(R.id.delayed_confirmation);
delayedConfirmationView.setTotalTimeMs(NUM_SECONDS * 1000);
...
delayedConfirmationView.setListener(this);
但另外他们还调用了.start()
方法:
delayedConfirmationView.start();
我已经使用FrameLayout对DelayedConfirmationView
进行了测试,它运行得很好,所以BoxInsetLayout在这里没有任何关系。
即使在复制并粘贴您的DelayedConfirmationView
xml代码后,一切也正常,屏幕上会显示灰色圆圈按钮。所以我有点惊讶:)
在使用此代码玩更多内容之后,我意识到您错误xmlns:app
行:
xmlns:app="http://schemas.android.com/apk/android.support.wearable.view"
您不能指定属性所在的库的包(与您不能使用android.support.wearable.R
类的方式相同 - 您需要使用自己的包中的R类。您需要使用:
xmlns:app="http://schemas.android.com/apk/res-auto"
然后在您的代码中一切正常。这就是为什么在用复制的BoxInsetLayout
代码(使用正确的xmlns
)替换根视图后,代码已经开始工作的按钮:)