如何获得引用颜色的实际值。在布局中我可以使用以下内容......
android:textColor="?android:attr/colorAccent"
..这适用于将TextView的文本颜色设置为主题定义的强调颜色。如何在运行时使用代码获取colorAccent的值?
另外,你如何发现所有可用值的列表,必须有一长串我可以获得的可用颜色列表,但该列表定义在哪里?
答案 0 :(得分:2)
对于您拥有的示例,您可以使用以下内容获取该值:
Color
ColorAccent
会在主题中为ObtainStyledAttributes
属性设置Context
(如果有)或默认值。
重要提一下,此方法Android.Resource.Attribute
是import hashlib
import os
SALT_LEN = 64
def hash(password,salt):
return hashlib.pbkdf2_hmac('sha512',password.encode(),salt,300000,dklen=124)
def original_pass(password):
salt = os.urandom(SALT_LEN)
hashed = hash(password,salt)
with open('hash.bin','wb') as file:
file.write(salt + hashed)
def check_pass(password):
with open('hash.bin','rb') as file:
data = file.read()
salt,hashed = data[:SALT_LEN],data[SALT_LEN:]
check_hash = hash(password,salt)
return check_hash == hashed
original_pass('Password')
print(check_pass('Password'))
的一部分,因此,如果您已经在活动中,您会发现它是其中的一部分,但如果您在其他任何课程中,则需要传递上下文以防它不可用。
有关可用值的完整列表,您可以从while True:
try:
A()
except NewConnectionError as err:
# This will also print the reason the exception occurred
print ('Detected error: {}'.format(err))
else:
print("A() returned successfully.")
finally:
print ("Next loop iteration...")
类获取它。在VS中进行检查以查看此类具有的不同属性。也许Android文档有更好的方法。
希望这会有所帮助.-
答案 1 :(得分:1)
如果资源是Android定义的资源:
var id = Android.Resource.Attribute.ColorAccent;
如果资源位于Dialog,Widget等内,而不是Android系统资源(即获取DatePickerDialog资源)
var id = SomeDatePickerDialog.Resources.GetIdentifier("date_picker_header_date", "id", "android");
使用获得的id:
var typedArray = Theme.ObtainStyledAttributes(new int[] { id });
var color = typedArray.GetColor(0, int.MaxValue);
if (color != int.MaxValue)
{
Log.Debug("COLOR", color.ToString());
}
对于可用的基本值,R
列表会根据API /主题进行更改:
但是要获得完整的参考资料,您必须使用您正在查看的API的Android源代码:
所以奥利奥测试版中定义的颜色:
然后在特定颜色的xml文件中查看它是如何定义的,并使用该定义来查找它的实际值(在valueXXX文件中的一个....)