问题
I'm attempting to use Andoird Wear's DelayedConfirmationView from the support library, by starting an activity.
The activity has this in 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() {
...
My delayed_main has this:
<?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>
I get no exception in my OnCreate, but all I get is a blank white screen. I've tried setImageDrawable. Also tried setContentView(View) passing in a new DelayedConfirmationView instance. Also tried deleting all the app: attributes in the above XML (hoping that some sensible defaults will apply). The docs don't give any example as to what to expect, or how to use.
Any ideas?
回答1:
There is a sample project in sdk called DelayedConfirmation
. If you have samples downloaded in your SDK Manager - you can find if here: sdk\samples\android-20\wearable\DelayedConfirmation
Part of main_activity.xml
file:
<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"/>
so the only extra attribute here is:
app:circle_radius_pressed="@dimen/circle_radius_pressed"
in MainActivity.java class there are almost the same lines as you set:
delayedConfirmationView = (DelayedConfirmationView) findViewById(R.id.delayed_confirmation);
delayedConfirmationView.setTotalTimeMs(NUM_SECONDS * 1000);
...
delayedConfirmationView.setListener(this);
But in addition they also invoke .start()
method:
delayedConfirmationView.start();
EDIT:
I've tested the DelayedConfirmationView
with just FrameLayout and it works just fine, so BoxInsetLayout has nothing to do here.
Even after copy&paste your DelayedConfirmationView
xml code everything also works OK, the grayish circle button is displayed on screen. So I was surprised a bit:)

After playing more with this code I've realized that you have wrong
xmlns:app
line:
xmlns:app="http://schemas.android.com/apk/android.support.wearable.view"
You cannot specify the package of library where the attributes are from (the same way like you cannot use android.support.wearable.R
class - You need to use R class from your own package. You need to use:
xmlns:app="http://schemas.android.com/apk/res-auto"
and then everything work fine in your code. This is the reason why after replacing root view with copied BoxInsetLayout
code (with proper xmlns
) the button the code has started to work:)
来源:https://stackoverflow.com/questions/24800263/delayedconfirmationview-is-blank-on-android-wear