在Android中的自定义按钮上设置字体

时间:2015-06-24 15:13:34

标签: android fonts android-button

我正在使用具有自定义背景的按钮。

首先,我已将按钮图像添加到drawable文件夹中。 然后我在drawable中创建了一个名为large_button.xml的按钮布局:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/large_buttom_pressed"
        android:state_pressed="true" />
    <item android:drawable="@drawable/large_buttom_pressed"
        android:state_focused="true" />
    <item android:drawable="@drawable/large_buttom_default" />
</selector>

然后我使用活动布局中的按钮:

<Button
    android:id="@+id/button_send"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="test button Text"
    android:onClick="sendMessage"
    android:background="@drawable/large_button"  />

问题是,(除了按钮比我想要的高),按钮中的文字全部为大写:

enter image description here

我也想知道如何告诉它使用另一种字体(例如默认字体,或已经可用的字体,不一定是我必须在ttf中导入的字体)

我将在另一个问题中解决按钮大小问题,以便搜索其中一个问题的人不必阅读这两个问题并且可能会混淆。

2 个答案:

答案 0 :(得分:1)

所以要修复大写使用:

people = {}

person_values = people.fetch(name, [])
person_values << item
people[name] = person_values

要更改您可以使用的字体:

android:textAllCaps="false"

包括的默认字体是:normal,serif,sans,monospace。

答案 1 :(得分:1)

从xml

更改字体的类型和样式
<Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:textAllCaps="false"
        android:typeface="monospace"/>

因此文本不会全部为大写

android:textAllCaps="false"

如果您想更改活动中的字体

Button btn = (TextView) findViewById(R.id.btn);
Typeface font = Typeface.createFromAsset(getAssets(), "Helv Neue 67 Med Cond.ttf");
btn.setTypeface(font);

从您的活动中,您可以使用此

private void overrideFonts(final Context context, final View v) {
    try {
        if (v instanceof ViewGroup) {
            ViewGroup vg = (ViewGroup) v;
            for (int i = 0; i < vg.getChildCount(); i++) {
                View child = vg.getChildAt(i);
                overrideFonts(context, child);
         }
        } else if (v instanceof Button ) {
            ((Button) v).setTypeface(Typeface.createFromAsset(context.getAssets(), "font.ttf"));
        }
    } catch (Exception e) {
  }
 }