快速设置重置我的自定义按钮的状态

时间:2015-09-23 10:50:54

标签: android button dialog alertdialog

我试图找出当您访问应用程序知道或可以被告知的快速设置时。

我有一组按钮用作标签(在Fragment中,在CardView)中,当我按下快速设置按钮失去状态时。我尝试了几种机制解决它,但找不到办法。

按钮使用

.setOnTouchListener(new View.OnTouchListener() { ... }

而不是onClick listener

当我尝试在显示对话框之前设置按钮的状态时,如果我在

中取消对话框后设置状态,我会得到相同的效果
public void onClick(DialogInterface dialog, int which) { ... }

然后我可以获得所需的行为。

我在对话方式方面缺少一些知识,因此quick settings导致基础视图被更新或通知更改。

任何人都可以提供帮助。

更新

按钮xml如下

<Button
        android:id="@+id/fs_btn_tab_month"
        style="@style/DefaultButtonText"
        android:layout_width="match_parent"
        android:layout_height="24dp"
        android:layout_margin="0dp"
        android:background="@drawable/button_default_bg"
        android:gravity="center|center_vertical"
        android:text="@string/fs_btn_tab_month"
        android:textColor="@color/button_text_color" />

和button_default_bg是

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true" >
    <shape>
        <solid
            android:color="@color/text_white" />
        <stroke
            android:width="1dp"
            android:color="@color/text_white" />
        <corners
            android:radius="1dp" />

    </shape>
</item>
<item>
    <shape>
        <solid
            android:color="@color/background" />
        <stroke
            android:width="1dp"
            android:color="@color/text_white" />
        <corners
            android:radius="1dp" />

    </shape>
  </item>
</selector>

就setOnClickListener()和setOnTouchListener()而言,我需要设置按钮的状态,使其看起来像一个标签,并且能够从片段中的其他位置执行此操作,而我找不到方法用setOnClickListener做到这一点。

看起来像这样

enter image description here

当我说失去它的状态时,它会变成蓝色背景颜色。

我将“状态”设置如下

mDaySelectedButton.setPressed(false);
mMonthSelectedButton.setPressed(true);
mMonthSelectedButton.setElevation(0f);
mYearSelectedButton.setPressed(false);

除快速设置下拉问题外,一切正常。

1 个答案:

答案 0 :(得分:1)

问题是,当通知中心/快速设置菜单被拉下时,按钮会失去他们的焦点&#34;状态,因为一次只能有一个视图。查看this stackoverflow question以获取有关不同视图状态的其他详细信息。

如果您想保留按钮的选择,请尝试使用所选状态。

但我建议您查看Android SDK的TabLayout,因为这会封装您所需的功能,并且只需要一些样式来满足您的屏幕截图。 codepath.com

还有一个教程