k_man
k_man

Reputation: 188

Android: How do I set the textsize for a layout?

I am trying to set the textsize at a global level and cannot figure or find a way to do it.

For example I have something like this:

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:id = "@+id/Table"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:shrinkColumns="*"  
         android:stretchColumns="*">
</TableLayout>
</ScrollView>

The TableRows and TextViews themselves are generated dynamically depending on user input.

The problem is I would like to set the base textSize globally based on a resource file without having to go and touch a bunch of code. Is there a way to tell the app, "hey app, use this as your base textSize for all the textViews?"

Or phrased another way, in HTML I can set the font size at the body, div, and table levels. Is there something analogous I can do at one the layout (LinearLayout, TableLayout, ScrollView, etc.) levels?

Upvotes: 17

Views: 25107

Answers (2)

Justin Buser
Justin Buser

Reputation: 2871

Or if you wanted to set the default all around text style but override parts of it for certain things (like the button in this example) you could do something like this:

       <style name="whiteText" parent="@android:style/TextAppearance.Medium">
            <item name="android:textStyle">normal</item>
            <item name="android:textColor">@android:color/white</item>
        </style>
        <style name="buttonStyle" parent="@android:style/Widget.Button">
            <item name="android:textAppearance">@style/whiteText</item>
            <item name="android:textStyle">bold</item>
            <item name="android:textColor">@android:color/black</item>
            <item name="android:gravity">center</item>
            <item name="android:background">@drawable/pinkbutton</item>
            <item name="android:cacheColorHint">@android:color/transparent</item>
            <item name="android:minHeight">50.0dip</item>
        </style>
        <style name="DarkTheme" parent="@android:style/Theme.Black.NoTitleBar">
            <item name="android:buttonStyle">@style/buttonStyle</item>
            <item name="android:textAppearance">@style/whiteText</item>
        </style>

Probably your single best place to get started though would be: http://developer.android.com/design/style/index.html

Upvotes: 0

Roman Nurik
Roman Nurik

Reputation: 29745

To set the global styling for all TextViews, set the android:textViewStyle attribute in a custom theme and apply the theme to your application or individual activities.

Pseudocode:

<style name="MyTheme" parent="android:Theme">
  <item name="android:textViewStyle">@style/MyTextView</item>
</style>

<style name="MyTextView" parent="android:Widget.TextView">
  <item name="android:textSize">14sp</item>
</style>

...

<activity android:theme="@style/MyTheme">
  ...

Upvotes: 17

Related Questions