是否可以在XML中动态设置Android按钮文本大小?

时间:2013-09-30 18:39:41

标签: android xml

我正在开发一个应用程序,主菜单上有一系列按钮,我希望它们都具有相同的文本大小。我可以在属性文件中指定它吗?

这是我当前的XML文件。

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:orientation="horizontal"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent">
    <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
        <Button
                android:id="@+id/sensors_available"
                android:text="@string/sensors_available"
                android:textSize="12sp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
    </TableRow>
    <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
        <Button
                android:id="@+id/b_start_hm"
                android:text="@string/hm_start_service"
                android:textSize="12sp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
        <Button
                android:id="@+id/b_stop_hm_service"
                android:text="@string/hm_stop_service"
                android:textSize="12sp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
    </TableRow>
    <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
        <Button
                android:id="@+id/b_start_hot_video"
                android:text="@string/video_service_start"
                android:onClick="startHotVideoService"
                android:textSize="12sp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
        <Button
                android:id="@+id/b_hv_stop_service"
                android:text="@string/hv_stop_service"
                android:textSize="12sp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
    </TableRow>
</TableLayout>

我是否可以用12sp之类的内容替换所有@string\custom_text_size,然后在string.xml文件中定义它?当我尝试这个时,当我启动我的应用程序时,我遇到了致命的异常。

2 个答案:

答案 0 :(得分:2)

你是如此接近,但你需要定义一个dimen而不是string

<dimen name="textSize12">12sp</dimen>

你的Button看起来像这样.-

<Button
    android:id="@+id/b_stop_hm_service"
    android:text="@string/hm_stop_service"
    android:textSize="@dimen/textSize12"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

理想情况下,dimen资源是在单独的资源文件中定义的,例如dimens.xml

答案 1 :(得分:0)

在res / values / styles.xml中创建样式:

<style name="TextSize">
    <item name="android:textSize">12sp</item>
</style>

在您的XML中声明它:

<Button
    android:id="@+id/b_start_hot_video"
    android:text="@string/video_service_start"
    android:onClick="startHotVideoService"
    style="@style/TextSize"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

通过使用样式,您可以存储多个设置,例如背景drawables,textColor等...