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

Discussion in 'Frågor, support och diskussion' started by chrotto, Sep 16, 2011.

  1. chrotto

    chrotto Baby Droid Medlem

    Joined:
    Jul 5, 2011
    Messages:
    17
    Likes Received:
    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

    Joined:
    Jul 26, 2010
    Messages:
    732
    Likes Received:
    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

    Joined:
    Jul 10, 2010
    Messages:
    6 448
    Likes Received:
    2 199

    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

    Joined:
    Jul 26, 2010
    Messages:
    732
    Likes Received:
    55

    MINA ENHETER

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

    Zooklubba Android Medlem

    Joined:
    Jul 10, 2010
    Messages:
    6 448
    Likes Received:
    2 199

    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

    Joined:
    Jul 26, 2010
    Messages:
    732
    Likes Received:
    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

    Joined:
    Jul 10, 2010
    Messages:
    6 448
    Likes Received:
    2 199

    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

    Joined:
    Dec 12, 2009
    Messages:
    1 594
    Likes Received:
    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

    Joined:
    Mar 18, 2010
    Messages:
    968
    Likes Received:
    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:
    Code:
    setTheme(R.style.Style1);
     
    mach likes this.
  10. Adam2

    Adam2 Adult Droid Medlem

    Joined:
    Jul 26, 2010
    Messages:
    732
    Likes Received:
    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

    Joined:
    Jul 26, 2010
    Messages:
    732
    Likes Received:
    55

    MINA ENHETER

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

    ViLANDER Senior Droid Medlem

    Joined:
    Dec 12, 2009
    Messages:
    1 594
    Likes Received:
    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

    Joined:
    Jul 10, 2010
    Messages:
    6 448
    Likes Received:
    2 199

    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

    Joined:
    Jul 5, 2011
    Messages:
    17
    Likes Received:
    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

    Joined:
    Jul 26, 2010
    Messages:
    732
    Likes Received:
    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

    Joined:
    Jul 10, 2010
    Messages:
    6 448
    Likes Received:
    2 199

    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

    Joined:
    Jul 26, 2010
    Messages:
    732
    Likes Received:
    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....