gpt4 book ai didi

android - 以编程方式访问 资源

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:06 26 4
gpt4 key购买 nike

是否可以在不引用资源类 R 的情况下以编程方式接收由 a 作为 int[] 保存的资源 ID?

<declare-styleable name="com_facebook_login_view">
<attr name="confirm_logout" format="boolean"/>
<attr name="fetch_user_info" format="boolean"/>
<attr name="login_text" format="string"/>
<attr name="logout_text" format="string"/>
</declare-styleable>

问题是我无法解析定义的“declare-styleable”属性的 ID - 始终返回 0x00:

int id = context.getResources().getIdentifier( "com_facebook_login_view", "declare-styleable", context.getPackageName() ); 
int[] resourceIDs = context.getResources().getIntArray( id );

最佳答案

这是以编程方式为 child-<attr>-tags 提供资源 ID 的解决方案为 <declare-styleable> 定义标签:

/*********************************************************************************
* Returns the resource-IDs for all attributes specified in the
* given <declare-styleable>-resource tag as an int array.
*
* @param context The current application context.
* @param name The name of the <declare-styleable>-resource-tag to pick.
* @return All resource-IDs of the child-attributes for the given
* <declare-styleable>-resource or <code>null</code> if
* this tag could not be found or an error occured.
*********************************************************************************/
public static final int[] getResourceDeclareStyleableIntArray( Context context, String name )
{
try
{
//use reflection to access the resource class
Field[] fields2 = Class.forName( context.getPackageName() + ".R$styleable" ).getFields();

//browse all fields
for ( Field f : fields2 )
{
//pick matching field
if ( f.getName().equals( name ) )
{
//return as int array
int[] ret = (int[])f.get( null );
return ret;
}
}
}
catch ( Throwable t )
{
}

return null;
}

也许有一天这会对某人有所帮助。

关于android - 以编程方式访问 <declare-styleable> 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13816596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com