Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

background_selected默认就有background_press的效果 #103

Open
codeZeng95 opened this issue Nov 4, 2021 · 6 comments
Open

background_selected默认就有background_press的效果 #103

codeZeng95 opened this issue Nov 4, 2021 · 6 comments

Comments

@codeZeng95
Copy link

给RLinearLayout设置 background_selected,然后发现我也没设置press效果,当我手指按下去的时候就有selected的效果,这应该算是Bug吧?大佬这是啥原因

@scsfwgy
Copy link
Contributor

scsfwgy commented Jun 19, 2023

@RuffianZhong 这个逻辑确实怪怪的,应该是下面这个逻辑的问题。这样会导致一个异常的效果,我设置选中状态并且不设置按压效果。这个时候按压选中的的按钮,就是展示Normal的效果。如下效果:

有问题的逻辑:
image

正常的
image

按压第一个按钮
image

@RuffianZhong
Copy link
Owner

事情是这样的:默认/按下/选中/不可用 这几个状态通过代码自定义的时候(本库功能),各个状态必须要提供值

写这个库的时候我按照个人的思路做了一些默认赋值的操作,可能有些业务场景存在一些不合理的地方,或者存在逻辑冲突

开发者暂时可以通过给各个状态赋值达到UI效果

后续:我再考虑一下是否存在一个较为完美的方案来默认赋值(但是具体业务场景总是复杂多变,个人认为如果遇到某些状态未设置导致UI效果不理想,可以通过给这几个状态都设置一下,就能解决所谓“不合理”的情况)

@scsfwgy
Copy link
Contributor

scsfwgy commented Jun 19, 2023

现在的问题是开发者自己设置颜色也会有问题的。
BTC的颜色:选中的颜色
USDT的颜色:默认的颜色
比如上述那个截图,如果我不设置按压的颜色,按压BTC就是最下面截图那个效果。
如果我设置按压效果,比如设置的按压颜色就是BTC那个颜色,这个时候去按压BTC是好的,但是再去按压USDT就会有问题了。无解

@RuffianZhong
Copy link
Owner

@scsfwgy
1.未设置按压状态时:将默认状态的值同步给按压状态
2.设置按压状态时:各个状态有自己的颜色值
我个人认为这个是没有什么问题的

以你这个需求为例:
1.如果你这两个控件是可以点击的,那你按下颜色和选中颜色一样(这个没问题啊,按下就是一种反馈)
2.如果你这两个控件是不可点击的(textView)只是需要选中和默认状态,你不要开启 clickable 就行啦,这时候无论是否设置 按下状态都没有影响(完全不会触发)

@scsfwgy
Copy link
Contributor

scsfwgy commented Jun 21, 2023

现在就是这种场景有问题:1.如果你这两个控件是可以点击的,那你按下颜色和选中颜色一样(这个没问题啊,按下就是一种反馈)
本身选中那个颜色去按压没问题。但是这个时候你去按压没选中那个按钮,颜色就会变成和选中那个按钮一样,手指划走又变成原来的样子了。非常怪。你看我那个截图。

@weijia1991
Copy link

我也遇到了相同的问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants