[android-developers] Re: Customized TextView for customized Typeface

2011-11-30 Thread Danny S.
Note: I renamed it from MemoryTextView to MyTextView but got not all
of them. Don't mind about the different names. In principle it works,
but I cant use the android default attributes for my custom text
view...

On 30 Nov., 12:26, Danny S. danny.schi...@googlemail.com wrote:
 Hi,

 I want to create a custom TextView that uses custom Typeface. I do
 this, cause I won't set Typeface for each TextView within the code. I
 created a class:

 public class MyTextView extends TextView {
         public MemoryTextView(Context context, AttributeSet attrs) {
                 super(context, attrs);

                 // retrieve attributes
                 TypedArray array = mContext.obtainStyledAttributes(attrs,
 R.styleable.MemoryTextView);

                 String font = 
 array.getString(R.styleable.MemoryTextView_ttfName);
                 // set font if defined, otherwise use standard font
                 if (font != null)
                         setFont(font);

                 // free up memory
                 array.recycle();
         }

 }

 I created the attributes for my view within the attrs.xml. And I can
 use the view and see my custom font.

 In Layout I use my view this way:
 my.package.structure.views.MyTextView
   android:layout_width=wrap_content
   android:layout_height=fill_parent
   myTextView:ttfName=AldrichRegular
   myTextView:text=@string/app_name
   android:textColor=@color/white
   android:textStyle=bold
   android:textSize=18sp
   android:gravity=center /

 Now the Problem: android based attributes I set does not work. My text
 is not bold, is not sized 18sp and gravity is not set like I would. If
 I add the android attribute to my declare-styleable it is used (e.g.
 the gravity).

 declare-styleable name=MemoryTextView
     attr name=android:gravity /
     ... other custom attributes
 /declare-styleable

 But I can not list all the possible TextView styles to this list. It
 seems not to be the clear way. Where is my mistake? I only want a
 TextView with all of it's behavior and additional functionality...

 Thanks a lot,
 -Danny

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Re: Customized TextView for customized Typeface

2011-11-30 Thread Danny S.
I think this would not work. TextView extends View already... And If I
put the TextView within a LinearLayout e.g. and inflate it in the
constructor of my custom view, I have to set the attributes manually
too. It seems I have to retrieve all my TextViews and set the Typeface
for each separate in the code. The idea of an extended TextView would
be the best and clean way, but I think its not possible as long as I
add the android based attributes to the declare-stylable set too...
I think this is really ugly... If I forget one - someone wonders why
their set attributes not act for my custom view.

Best regards,
-Danny S.


On 30 Nov., 12:33, Danny S. danny.schi...@googlemail.com wrote:
 Note: I renamed it from MemoryTextView to MyTextView but got not all
 of them. Don't mind about the different names. In principle it works,
 but I cant use the android default attributes for my custom text
 view...

 On 30 Nov., 12:26, Danny S. danny.schi...@googlemail.com wrote:







  Hi,

  I want to create a custom TextView that uses custom Typeface. I do
  this, cause I won't set Typeface for each TextView within the code. I
  created a class:

  public class MyTextView extends TextView {
          public MemoryTextView(Context context, AttributeSet attrs) {
                  super(context, attrs);

                  // retrieve attributes
                  TypedArray array = mContext.obtainStyledAttributes(attrs,
  R.styleable.MemoryTextView);

                  String font = 
  array.getString(R.styleable.MemoryTextView_ttfName);
                  // set font if defined, otherwise use standard font
                  if (font != null)
                          setFont(font);

                  // free up memory
                  array.recycle();
          }

  }

  I created the attributes for my view within the attrs.xml. And I can
  use the view and see my custom font.

  In Layout I use my view this way:
  my.package.structure.views.MyTextView
    android:layout_width=wrap_content
    android:layout_height=fill_parent
    myTextView:ttfName=AldrichRegular
    myTextView:text=@string/app_name
    android:textColor=@color/white
    android:textStyle=bold
    android:textSize=18sp
    android:gravity=center /

  Now the Problem: android based attributes I set does not work. My text
  is not bold, is not sized 18sp and gravity is not set like I would. If
  I add the android attribute to my declare-styleable it is used (e.g.
  the gravity).

  declare-styleable name=MemoryTextView
      attr name=android:gravity /
      ... other custom attributes
  /declare-styleable

  But I can not list all the possible TextView styles to this list. It
  seems not to be the clear way. Where is my mistake? I only want a
  TextView with all of it's behavior and additional functionality...

  Thanks a lot,
  -Danny

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Re: Customized TextView for customized Typeface

2011-11-30 Thread Danny S.
For additional info:

I logged out the attrs that are given to my View:

Attribute 1: textStyle
Attribute 2: textColor
Attribute 3: gravity
Attribute 4: layout_width
Attribute 5: layout_height
Attribute 6: ttfName

But textStyle, textColor or gravity for example have no effect. I
thought when I call the super constructor and pass the attr to it, it
takes all the relevant attributes... But it doesn't!

-Danny

On 30 Nov., 15:02, Danny S. danny.schi...@googlemail.com wrote:
 I think this would not work. TextView extends View already... And If I
 put the TextView within a LinearLayout e.g. and inflate it in the
 constructor of my custom view, I have to set the attributes manually
 too. It seems I have to retrieve all my TextViews and set the Typeface
 for each separate in the code. The idea of an extended TextView would
 be the best and clean way, but I think its not possible as long as I
 add the android based attributes to the declare-stylable set too...
 I think this is really ugly... If I forget one - someone wonders why
 their set attributes not act for my custom view.

 Best regards,
 -Danny S.

 On 30 Nov., 12:33, Danny S. danny.schi...@googlemail.com wrote:







  Note: I renamed it from MemoryTextView to MyTextView but got not all
  of them. Don't mind about the different names. In principle it works,
  but I cant use the android default attributes for my custom text
  view...

  On 30 Nov., 12:26, Danny S. danny.schi...@googlemail.com wrote:

   Hi,

   I want to create a custom TextView that uses custom Typeface. I do
   this, cause I won't set Typeface for each TextView within the code. I
   created a class:

   public class MyTextView extends TextView {
           public MemoryTextView(Context context, AttributeSet attrs) {
                   super(context, attrs);

                   // retrieve attributes
                   TypedArray array = mContext.obtainStyledAttributes(attrs,
   R.styleable.MemoryTextView);

                   String font = 
   array.getString(R.styleable.MemoryTextView_ttfName);
                   // set font if defined, otherwise use standard font
                   if (font != null)
                           setFont(font);

                   // free up memory
                   array.recycle();
           }

   }

   I created the attributes for my view within the attrs.xml. And I can
   use the view and see my custom font.

   In Layout I use my view this way:
   my.package.structure.views.MyTextView
     android:layout_width=wrap_content
     android:layout_height=fill_parent
     myTextView:ttfName=AldrichRegular
     myTextView:text=@string/app_name
     android:textColor=@color/white
     android:textStyle=bold
     android:textSize=18sp
     android:gravity=center /

   Now the Problem: android based attributes I set does not work. My text
   is not bold, is not sized 18sp and gravity is not set like I would. If
   I add the android attribute to my declare-styleable it is used (e.g.
   the gravity).

   declare-styleable name=MemoryTextView
       attr name=android:gravity /
       ... other custom attributes
   /declare-styleable

   But I can not list all the possible TextView styles to this list. It
   seems not to be the clear way. Where is my mistake? I only want a
   TextView with all of it's behavior and additional functionality...

   Thanks a lot,
   -Danny

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en