我试图找出当您访问应用程序知道或可以被告知的快速设置时。
我有一组按钮用作标签(在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做到这一点。
看起来像这样
当我说失去它的状态时,它会变成蓝色背景颜色。
我将“状态”设置如下
mDaySelectedButton.setPressed(false);
mMonthSelectedButton.setPressed(true);
mMonthSelectedButton.setElevation(0f);
mYearSelectedButton.setPressed(false);
除快速设置下拉问题外,一切正常。
答案 0 :(得分:1)
问题是,当通知中心/快速设置菜单被拉下时,按钮会失去他们的焦点&#34;状态,因为一次只能有一个视图。查看this stackoverflow question以获取有关不同视图状态的其他详细信息。
如果您想保留按钮的选择,请尝试使用所选状态。
但我建议您查看Android SDK的TabLayout,因为这会封装您所需的功能,并且只需要一些样式来满足您的屏幕截图。 codepath.com
还有一个教程