it-swarm.com.de

Android - TextView auf Fett einstellen funktioniert nicht

Hier ist das XML:

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/modal_list_row"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:paddingBottom="7.5dp"
    Android:orientation="vertical" >

    <TextView
                Android:id="@+id/title_text_view"
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:layout_alignParentTop="true"
                Android:layout_centerHorizontal="true"
                Android:gravity="center"
                Android:text="@string/alert_title_small"
                Android:textColor="@color/alert_dialog_text_color"
                Android:textSize="@dimen/alert_dialog_title_font_size"
                Android:textStyle="bold" />

</RelativeLayout>

Das grafische Layout zeigt zwar fetten Text, auf dem Gerät jedoch nicht. Ist es eine Gerätesache oder was?

Update:

Für Leute, die ständig nach dem vollständigen XML fragen, wird es hier aktualisiert. Ein einfaches relatives Layout. Und hier ist der Java Code:

this.titleTextView.setText(this.modalListState.title);

Überlegungen: Könnte es an den Geräteschriftarten liegen? Hat jemand Galaxy S3 zur Bestätigung? Könnte es der Aktivitätsstil sein? Hier ist der für die gesamte App verwendete:

<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">

<!--
    Base application theme, dependent on API level. This theme is replaced
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices.

-->
<style name="AppBaseTheme" parent="Android:Theme.Light">
    <!--
        Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here.

    -->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>

<style name="TransparentActivity" >
    <item name="Android:windowBackground">@Android:color/transparent</item>
    <item name="Android:colorBackgroundCacheHint">@null</item>
    <item name="Android:windowIsTranslucent">true</item>
    <item name="Android:windowAnimationStyle">@Android:style/Animation</item>
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowContentOverlay">@null</item>
    <item name="Android:windowFullscreen">false</item>
</style>

Der TransparentActivity-Stil wird für die betreffende Aktivität verwendet.

23

Nun, ich habe eine dumme Antwort auf dieses Problem gefunden. Ich habe eine benutzerdefinierte Schriftart auf dem Gerät verwendet, nicht die Standardschrift. Sobald ich zur Standardeinstellung wechselte, funktionierten alle Dinge wie erwartet!

34

es gibt eine Methode, mit der Sie die Textansicht einstellen können, indem Sie die setTypeface-Methode aufrufen.

 textView.setTypeface(null, Typeface.BOLD_ITALIC);
 textView.setTypeface(null, Typeface.BOLD);
 textView.setTypeface(null, Typeface.ITALIC);

und verweisen auch auf diesen Link ...

Setze den TextView-Stil (fett oder kursiv)

20
Nilesh Patel

Die meisten Antworten sind richtig.

Sie können auch die so genannten verwenden: SpannableString

Sie können es folgendermaßen verwenden:

String bold = "yes !";
String notBold = "no ";
SpannableString text = new SpannableString ( notBold + bold );
text.setSpan ( new StyleSpan ( Typeface.BOLD ) , notBold.length () , text .length () , 0 );
myTextView.setText ( text , BufferType.SPANNABLE );

Was ist schön an SpannableString ist, dass Sie mehrere Spannweiten anwenden können, jeweils auf verschiedene Teile des Strings! Wie Sie bemerkt haben, habe ich die fettgedruckte Fläche nur auf einen Teil der Zeichenfolge angewendet (Sie geben die Start- und Endindizes an) und sollte folgendermaßen aussehen:

nein ja!

In der Methode setSpan geben Sie den anzuwendenden SPAN, den Startindex, den Endindex und Flags (ich verwende immer 0) in dieser bestimmten Reihenfolge an.

Sie können sogar andere Bereiche anwenden, z. B. die Textgröße ändern (verwenden Sie RelativeSizeSpan ) oder sogar Farbe (verwenden Sie ForegroundColorSpan ) und vieles mehr!

Hier ist ein Beispiel für die Farbspanne, die Sie auf folgende Weise erreichen können:

text.setSpan ( new ForegroundColorSpan ( Color.RED) , 0 , notBold .length () , 0 );

Nun wird der erste Teil des Strings (der das Wort no enthält) rot angezeigt!

5
Leeeeeeelo

Der Grund, warum TextView nicht fett dargestellt wird, wenn Sie Ihre Anwendung auf einem mobilen Gerät ausführen, ist, dass Sie in Ihrer Aktivität Kalligraphie verwendet haben müssen. Um den Stil fett zu ändern, müssen Sie den folgenden Code in Ihre Java-Datei schreiben.

 textView.setTypeface(textView.getTypeface(), Typeface.BOLD);

Viel Glück

3

Die in der Dimensionsdatei definierte Schriftgröße wurde möglicherweise während des Laufs nicht erfasst. Ich nehme an, Sie führen die App nicht im Emulator aus.

Überprüfen Sie Folgendes, um sicherzustellen, dass es sich nicht um ein Gerät handelt.

  • stellen Sie sicher, dass die Schriftgröße für die richtige Dimensionsdatei für die Zielgerätmetriken korrekt definiert ist
  • Bei einigen Geräten kann die Standardtextgröße geändert werden. Überprüfen Sie die Standardtextgröße unter "Einstellungen" im Gerät.
  • Alle in Ihrer Manifestdatei für die Aktivität, in der das Layout angezeigt wird, verwendeten Stile oder Designs. Entfernen Sie den Stil/das Thema für eine Weile.
  • versuchen Sie, die Schriftgröße in eine gerade Zahl für z. 24sp
  • Überprüfen Sie die Skaliereigenschaft einer der übergeordneten Ansichten/Layouts.
  • kein Code versucht, den Schriftstil während der Laufzeit zu ändern.
3
skpal202

Es muss eine fette/kursive/unterstrichene (d. H. Zielversion) der Schriftart vorhanden sein. Das System erstellt es nicht magisch für Sie.

Stellen Sie daher sicher, dass die Zielvariante Ihrer Schriftart enthalten ist.

1
Ujjwal Singh

Versuchen Sie es mit HTML-Tags  in Ihrer Datei strings.xml. So können Sie es tun, Android string.xml beim Lesen von HTML-Tags Problem

Um es programmgesteuert zu machen,

TextView t = new TextView(mContext);
t.setText(Html.fromHtml("<b>This is bold</b>"));
1
Aman Gautam

Ich hatte ein ähnliches Problem mit dem Escape-Zeichen <. Sie müssen stattdessen &lt; verwenden. Zum Beispiel:

<string name="greetings">&lt;b>From Russia with love&lt;/b></string>

Es steht auf der offiziellen Seite .

1
BarbosSergos

Erstellen Sie ein benutzerdefiniertes theme für das gesamte Gerätelayout. Und setzen Sie es in Ihre textview .

Ich denke, das Problem ist, dass der Text sehr langsam ist, so dass Sie jeden Effekt erzielen können.

Wenn Sie dieses Problem getestet haben, ändern Sie die Schriftgröße auf 40sp und führen Sie Aus. Was passiert?

0
Harshid

Könnten Sie bitte alle Java- und XML-Codes einreichen, um weitere Informationen zu Ihrem Problem zu erhalten? 

Möglicherweise befindet sich das Problem nicht in der Textansicht, die Sie uns zeigen, sondern bisher

Android:textStyle="bold"

scheint an Ihrem grafischen Layout zu arbeiten.

0
Gaurav