将按下选择器添加到DelayedConfirmationView

时间:2015-04-01 18:53:59

标签: android wear-os

我无法找到将新闻效果添加到DelayedConfirmationView的方法。我尝试在app:circle_color上使用选择器,但按下的颜色在点击时不会出现。

这是我的xmls

DelayedConfirmationView:

<android.support.wearable.view.DelayedConfirmationView
    android:id="@+id/confirmation_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:src="@drawable/ic_close_white_48dp"
    app:circle_color="@drawable/selector_confirmation_view"
    app:circle_radius="@dimen/circular_button_radius"
    app:circle_radius_pressed="@dimen/circular_button_radius"
    app:circle_padding="6dp"
    app:circle_border_width="4dp"
    app:circle_border_color="@color/white" />

选择

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/dark_blue" android:state_pressed="true" />
    <item android:color="@color/blue" />
</selector>

那么,如何在该视图中添加按压效果?

P.S。 它似乎有效,但仅限于CircledImageView

1 个答案:

答案 0 :(得分:0)

您可以在官方样本中查看DelayedConfirmationView的使用示例:samples\android-22\wearable\DelayedConfirmation

原因

DelayedConfirmationView不是普通按钮,默认情况下不会像标准按钮那样应用按下状态。

要收听点击,有一个特殊的DelayedConfirmationListener通过setListener(DelayedConfirmationListener)方法设置。您需要在那里实现两种方法:

  • onTimerSelected(View) - 一旦用户触摸按钮就会触发(只需触摸,甚至不是完全点击)。通常DelayedConfirmationView在用户可见之后立即启动(例如通过声音请求某些操作后),并且他没有时间取消此操作。对触摸而不是完全点击做出反应是帮助用户尽快中断此操作的好方法。
  • onTimerFinished(View) - 在时间结束时调用。

解决方案

如果您想要将状态更改为按下触摸,则需要执行以下操作:

confirmationView.setListener(new DelayedConfirmationView.DelayedConfirmationListener() {
    @Override
    public void onTimerSelected(View view) {
        confirmationView.setPressed(true);
    }

    @Override
    public void onTimerFinished(View view) {
        // do something here
    }
});

顺便说一下。请将您的选择器从/res/drawable/移至/res/color/并更改:

app:circle_color="@drawable/selector_confirmation_view"

为:

app:circle_color="@color/selector_confirmation_view"