Android: Как установить размер текста для макета? - PullRequest
12 голосов
/ 05 декабря 2011

Я пытаюсь установить размер текста на глобальном уровне и не могу понять или найти способ сделать это.

Например, у меня есть что-то вроде этого:

<?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>

Сами TableRows и TextViews генерируются динамически в зависимости от пользовательского ввода.

Проблема в том, что я хотел бы установить базовый textSize глобально на основе файла ресурсов, не прибегая к прикосновению к коду кода. Есть ли способ сообщить приложению: «Привет, приложение, используй это в качестве базового textSize для всех textViews?»

Или по-другому, в HTML я могу установить размер шрифта на уровне тела, div и таблицы. Есть ли что-то аналогичное, что я могу сделать на одном уровне макета (LinearLayout, TableLayout, ScrollView и т. Д.)?

Ответы [ 2 ]

15 голосов
/ 05 декабря 2011

Чтобы установить глобальный стиль для всех TextView с, установите атрибут android:textViewStyle в пользовательской теме и примените тему к своему приложению или отдельным действиям.

Псевдокод:

<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">
  ...
0 голосов
/ 01 июня 2012

Или, если вы хотите установить стиль текста по умолчанию, но переопределять его части для определенных вещей (как кнопка в этом примере), вы можете сделать что-то вроде этого:

       <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>

Вероятно, ваше единственное лучшее место для начала работы: http://developer.android.com/design/style/index.html

...