Ge användare möjlighet att påverka textstorlek?

Diskussion i 'Frågor, support och diskussion' startad av chrotto, 16 sept 2011.

  1. chrotto

    chrotto Baby Droid Medlem

    Blev medlem:
    5 jul 2011
    Inlägg:
    17
    Mottagna gillanden:
    0

    MINA ENHETER

    Bygger en app som innehåller en hel del text. Skulle vilja ge användarna möjlighet att styra textstorleken.
    Är det någon som har en hint om hur man kan lägga en sådan funktion i koden?

    /Christer
     
  2. Adam2

    Adam2 Adult Droid Medlem

    Blev medlem:
    26 jul 2010
    Inlägg:
    732
    Mottagna gillanden:
    55

    MINA ENHETER

    Jag har funderat i samma banor. Det bästa jag kom på var att ha en skalfaktor som sätts i inställningarna. Sen börjar det jobbiga med att, i koden, sätta storleken på alla textviews och liknande... Hoppas någon klurig person kan tips oss om något bättre!

    Sent from my Nexus S using Tapatalk
     
  3. Zooklubba

    Zooklubba Android Medlem

    Blev medlem:
    10 jul 2010
    Inlägg:
    6 393
    Mottagna gillanden:
    2 133

    MINA ENHETER

    Borde det inte ganska simpelt gå att översätt sp's till pixlar? Går ju simpelt som få att göra det med dp till pixlar i all fall. På så sätt är det ju väldigt lätt att sätta det i koden.

    Edit: hittade det här:
    ext.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12f);
     
  4. Adam2

    Adam2 Adult Droid Medlem

    Blev medlem:
    26 jul 2010
    Inlägg:
    732
    Mottagna gillanden:
    55

    MINA ENHETER

    Jag förstår inte ditt svar. Utveckla gärna! :)
     
  5. Zooklubba

    Zooklubba Android Medlem

    Blev medlem:
    10 jul 2010
    Inlägg:
    6 393
    Mottagna gillanden:
    2 133

    MINA ENHETER

    Alltså. Det går att översätta dps till pixlar. Därav går det ju att skriva det i kodmässigt. Borde också på samma sätt gå att översätta sp till pixlar då det bara är dps som är skalade av användarens inställda fontstorlek.


    ext.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12f);
    Använder du den betyder det att du sätter fonten till 12sp.

    Alltså har du en inställning som heter scale i dina settings. Låt användaren bestämma denna.

    Sedan är det bara att använda setTextSize(int type, float value) för att sätta storleken på alla saker som nu har storlekar.
     
  6. Adam2

    Adam2 Adult Droid Medlem

    Blev medlem:
    26 jul 2010
    Inlägg:
    732
    Mottagna gillanden:
    55

    MINA ENHETER

    Tack, då är det ungefär så som jag tänkt tidigare. Frågan är bara om det finns något smidigare sätt än att använda setTextSize() på alla TextViews...? Det blir lite omständigt tycker jag...
     
  7. Zooklubba

    Zooklubba Android Medlem

    Blev medlem:
    10 jul 2010
    Inlägg:
    6 393
    Mottagna gillanden:
    2 133

    MINA ENHETER

    Direkt omständligt tycker inte jag det verkar med tanke på att det du vill göra är att ändra fonten dynamiskt så att den även tar hänsyn till densitet.
    Är väl två rader för inställningen och sedan en rad per textStorlek, tycker låter väldigt simpelt och lätt. Tar ju inte många minuter att implementera heller.

    Den som sitter vid en dator kan ju söka om man kan ändra en style i kod och på så sätt ha den stylen på alla texter.

    Sent from my HTC Desire using Tapatalk
     
  8. ViLANDER

    ViLANDER Senior Droid Medlem

    Blev medlem:
    12 dec 2009
    Inlägg:
    1 594
    Mottagna gillanden:
    172

    MINA ENHETER

    Gör en en subklass till TextView där man initierar den scale-faktor man vill ha, på så sätt slipper man använda setTextSize() i sin annars relevanta kod - nu hålls den bara till den specifika subklassen.
     
  9. Sed

    Sed Adult Droid Medlem

    Blev medlem:
    18 mar 2010
    Inlägg:
    968
    Mottagna gillanden:
    310

    MINA ENHETER

    Det går ju skapa olika styles också Applying Styles and Themes | Android Developers .

    Exempel
    HTML:
    <style name="Style1" >
             <item name="fontsize">12dp</item>
             <item name="color">#000000</item>
    </style>
    
    <style name="Style2" >
             <item name="fontsize">14dp</item>
             <item name="color">#439348</item>
    </style>
    
    
    <TextView
       android:id="@+id/test"  
       android:textColor="?color"
       android:textSize="?fontsize" 
       android:text="" 
     />
    
    Byter styles i koden:
    Kod:
    setTheme(R.style.Style1);
     
    mach gillar detta.
  10. Adam2

    Adam2 Adult Droid Medlem

    Blev medlem:
    26 jul 2010
    Inlägg:
    732
    Mottagna gillanden:
    55

    MINA ENHETER

    Snyggare lösning helt klart men kräver ju också lite jobb såhär i efterhand...
     
  11. Adam2

    Adam2 Adult Droid Medlem

    Blev medlem:
    26 jul 2010
    Inlägg:
    732
    Mottagna gillanden:
    55

    MINA ENHETER

    Detta känns som rätt sätt (i min värld iaf). Tack!
     
    mach gillar detta.
  12. ViLANDER

    ViLANDER Senior Droid Medlem

    Blev medlem:
    12 dec 2009
    Inlägg:
    1 594
    Mottagna gillanden:
    172

    MINA ENHETER

    Japp, dock har du den hela tiden redo om du enkelt vill att den aktuella TextView:n ska kunna anpassas eller inte.
     
  13. Zooklubba

    Zooklubba Android Medlem

    Blev medlem:
    10 jul 2010
    Inlägg:
    6 393
    Mottagna gillanden:
    2 133

    MINA ENHETER

    Då kan ju användaren inte få välja värde själv utan de måste välja mellan förinställda alternativ.

    Sent from my HTC Desire using Tapatalk
     
  14. chrotto

    chrotto Baby Droid Medlem

    Blev medlem:
    5 jul 2011
    Inlägg:
    17
    Mottagna gillanden:
    0

    MINA ENHETER

    Har med intresse följt dialogen. Får tacka er för förslagen. Lutar nog också åt styles-iden. /Christer
     
  15. Adam2

    Adam2 Adult Droid Medlem

    Blev medlem:
    26 jul 2010
    Inlägg:
    732
    Mottagna gillanden:
    55

    MINA ENHETER

    Sant men en "multi select" med typ 4 alternativ uppfyller syftet.

    Sent from my Nexus S using Tapatalk
     
  16. Zooklubba

    Zooklubba Android Medlem

    Blev medlem:
    10 jul 2010
    Inlägg:
    6 393
    Mottagna gillanden:
    2 133

    MINA ENHETER

    Är inte setThemelösningen i princip identisk med den jag skrev? Har inte tid att testa men tar en titt imorgon. Är nog alldeles för trött för att skriva konstruktivt.

    Sent from my GT-P7510 using Tapatalk
     
  17. Adam2

    Adam2 Adult Droid Medlem

    Blev medlem:
    26 jul 2010
    Inlägg:
    732
    Mottagna gillanden:
    55

    MINA ENHETER

    Okej, att skriva på fyllan är inte bra. Jag menar givetvis single select. (Att användaren kan välja mellan small, medium, large och extra large i en "drop-down" som sedan väljer 1 av 4 styles....