2012-10-15 4 views
37

C'è un ActionBar su ogni applicazione Android 4.0 e ha ottenuto un titolo. Devo rendere questa taglia di meno. Ma non capisco come posso farlo, perché ActionBar non fornisce metodi pubblici per questo. Nota: Non voglio utilizzare visualizzazioni personalizzate.Come modificare la dimensione del testo del titolo nella barra delle azioni?

+0

Bella soluzione pulita qui: http://stackoverflow.com/a/29266326/1617737 –

risposta

3

La dimensione del testo in Android ActionBar è standard.

Dal momento che ICS, Android ora sviluppa uno standard in modo che le applicazioni (si spera) seguano le stesse linee guida dell'interfaccia utente e principi di progettazione.

http://developer.android.com/guide/practices/ui_guidelines/index.html

Per questo non si può cambiare.

Tuttavia, se si vuole ancora di farlo, si potrebbe usare un tema personalizzato o forse implementare ActionBar (una forchetta) e modificare le sue fonti: https://github.com/johannilsson/android-actionbar per ottenere il massimo controllo.

+3

Si potrebbe. Ma non dovresti. Il Chrome di Android è progettato da professionisti dell'interfaccia utente che studiano come un utente interagisce con un dispositivo e ottimizzano l'aspetto e il posizionamento di tutti gli elementi dell'interfaccia utente per facilitare una buona interazione. La modifica del Chrome renderà un'app meno utilizzabile e frustrante per gli utenti. – 323go

47

In realtà, puoi fare ciò che desideri personalizzare l'ActionBar. Deve essere fatto attraverso il tema. Si può fare qualcosa di simile:

<style name="Theme.YourTheme" parent="android:style/Theme"> 
    <item name="android:actionBarStyle">@style/Theme.YourTheme.Styled.ActionBar</item> 
</style> 

<style name="Theme.YourTheme.Styled.ActionBar"> 
    <item name="android:titleTextStyle">@style/Theme.Viadeo.Styled.YourTheme.TitleTextStyle</item> 
</style> 

<style name="Theme.YourTheme.Styled.ActionBar.TitleTextStyle" parent="@android:style/Widget.TextView"> 
    <item name="android:textSize">12sp</item> 
</style> 
+2

Grazie Aurélien!Dovresti considerare di usare sp inshead di dp per le dimensioni del testo ;-) – gingo

+2

hai ragione :) –

+8

Invece di codificare hardcoded di qualsiasi dimensione, puoi considerare di ereditare da 'parent =" @ android: style/TextAppearance.Large ". Ciò ti darà la dimensione standard del testo più grande, indipendentemente dal dispositivo in cui ti trovi. –

18

Si può sempre fare qualcosa di simile:

ActionBar actionBar = getActionBar(); 
actionBar.setTitle(Html.fromHtml("<small>YOUR TITLE</small>")); 
+0

questo non funziona, dovrete aggiungere textview – Amrut

+0

Ha funzionato per me, usando Sherlock –

+0

questo funziona bene e ha funzionato per me – Milaaaad

7

sul mio sistema, res/stili AppTheme ha una nota dicendo

<!-- All customizations that are NOT specific to a particular API-level can go here. --> 

e questo è lo stile indicato in AndroidMainfest.xml. Ho aggiunto

<item name="android:textSize">15sp</item> 

e ha funzionato e preferisco farlo che un ActionBar personalizzato.

1

Ho seguito questo metodo per saltare la creazione di stile personalizzato:

  1. creare un layout personalizzato con la dimensione del testo richiesto e
  2. applicare tale alla tua barra delle operazioni.

1) Creare un file di layout (titlebar.xml):

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/action_bar_title" 
     android:text="@string/app_name" 
     android:textColor="@color/colorPrimary" 
     android:textSize="24sp" /> 
</LinearLayout> 

Qui impostare il textSize richiesto.

2) MainActivity.java

getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); //bellow setSupportActionBar(toolbar); 
    getSupportActionBar().setCustomView(R.layout.titlebar); 

speranza che questo aiuti.