2016-06-15 5 views
1

Ich erweiterte die TextView-Klasse zu "CustomTextView", deshalb musste ich eine benutzerdefinierte Schriftart festlegen. So ist es das Ergebnis:Android Studio: ändere textSize auf Benutzer erweitert Aktivität

public class CustomTextView extends TextView { 

    public CustomTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/nn.otf")); 
     this.setTextSize(30); 
    } 
} 

Sie können sehen, dass ich einen Standardtextsize gefassten, dass es 30:

Als ich diese CustomTextView wollen, verwende ich diesen Code:

<com.calendar.CustomTextView 
    android:id="@+id/edData" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="DOM 21 GIU" 
    android:textSize="45dp"/> 

Wenn Sie bemerken, , Habe ich den textSize Wert auf 45dp gesetzt, aber es bleibt 30 (aus der benutzerdefinierten Klasse). Wie stelle ich eine andere textSize ein? Auch für mutigen Stil?

Antwort

0

Um den Stil einzustellen, verwenden Sie einfach android:textStyle="bold". Für Ihr anderes Problem können Sie die textSize von den Attributen, die ich glaube, mit der Methode attrs.getAttribute(NAME OF ATTRIBUTE) überprüfen und dann können Sie es auf diesen Wert setzen oder auf 30 setzen, je nachdem, was Sie wollen.

+0

Wenn ich 'android: textStyle = "bold"' verwende, wird es nicht funktionieren, aus dem gleichen Grund von textSize – Simone

+0

Benötigen Sie noch Hilfe bitte – Simone

1

sollten Sie die this.setTextSize (30) entfernen; vom Konstruktor, weil das xml-Layout während des Super (context, attrs) -Aufrufs die Größe ändert, und die fettgedruckte Schriftart in der otf-Datei enthalten sein sollte (normalerweise sind verschiedene otf-Dateien für verschiedene Stile vorhanden)

+0

Ich weiß das ... Also muss ich textSize für jeden Text setzen? – Simone

+0

Wenn Sie die gleiche Größe für alle Textansichten verwenden müssen, können Sie einen Stil verwenden https://developer.android.com/guide/topics/ui/themes.html – CLucera

+0

Ich habe mehrere Textansicht, aber jeder muss eine Textsize haben anders, aber die gleiche Schriftart – Simone

1

Das ist mein Lösung: (Ich habe Tests mit textColor und nicht textSize gemacht, aber es ist dasselbe).

Ich habe das res/Werte/atrs.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="CustomTextView"> 
     <attr name="textColor" format="string" /> 
    </declare-styleable> 
</resources> 

Dann bearbeitet, ich meine Klasse wie:

public class CustomTextView extends TextView { 

    public CustomTextView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(attrs); 
    } 

    public CustomTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(attrs); 
    } 

    public CustomTextView(Context context) { 
     super(context); 
     init(null); 
    } 

private void init(AttributeSet attrs) { 
    if (attrs != null) { 
     TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.CustomTextView); 
     String fontName = a.getString(R.styleable.CustomTextView_fontName); 

     if (textColor != null) { 
      this.setTextColor(Color.parseColor(textColor)); 
     } else { 
      this.setTextColor(Color.parseColor("#000000")); 
     } 

     a.recycle(); 
    } 
    } 

} 

Also diese Arbeit:

<com.imgspa.listviewadapter.CustomTextView 
     android:id="@+id/ed" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      listviewadapter:textColor="#FF0000"/> 

     <com.imgspa.listviewadapter.CustomTextView 
      android:id="@+id/edRis" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="35dp" /> 

Die erste benutzerdefinierte textview Text ist rot, der zweite ist schwarz

Verwandte Themen