How to get attributes with namespace “android” in custom TextView

旧街凉风 提交于 2019-12-10 14:55:37

问题


In custom TextView I'm trying to obtain value of a text attribute (for example).

TypedArray values = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.TextView);
String text = values.getString(com.android.internal.R.styleable.TextView_text);

But I'm getting this error message:

package com.android.internal.R does not exist

So how to retrieve "default" attributes of TextView?


回答1:


The internal.R class isn't visible so you can only read them through their accessor methods and only once your super constructor has been called.

See the TextView source to see how it works internally.




回答2:


If you want have an access to those 'android' attributes you can 'override' them: in your declarable-styleable declare eg.

<attr name="android:padding"/>

Then you can easily obtain it this way:

int padding = a.getInt(R.styleable.CustomView_android_padding, -1);

Just for a record anwser is inspired by source code of TwoWayView layout implemented by Lucas Rocha. I think it is good example to analyse how to implement custom views




回答3:


For accessing the resource of com.android.internal.R, you can use

Resources.getSystem().getIdentifier(name, defType, defPackage)

The link may be helpful:



来源:https://stackoverflow.com/questions/26486791/how-to-get-attributes-with-namespace-android-in-custom-textview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!