Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get attributes with namespace "android" in custom TextView

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?

like image 319
Dima Avatar asked Oct 21 '14 12:10

Dima


2 Answers

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

like image 125
Krzysztof Skrzynecki Avatar answered Nov 09 '22 02:11

Krzysztof Skrzynecki


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.

like image 38
reactivemobile Avatar answered Nov 09 '22 02:11

reactivemobile