3

我有点卡在这里,真的可以使用一些帮助。在我看来,向按钮添加两行单独的文本应该很容易。但事实并非如此。有一种方法可以使用 html 标记,但这不允许您指定超出“大”和“小”的字体或文本大小。

这是我的按钮,它被称为“clicky”:

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

这是它出现在其中一个布局文件中的位置:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" 
 android:layout_width="fill_parent"
  android:layout_height="fill_parent">



<Button
        android:id="@+id/clicky"
        android:layout_width="137.5dip"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="2dip"
        android:layout_marginBottom="2dip"
        android:layout_marginRight="1dip"
        android:textSize="20dip"
        android:background="@drawable/clicky"
  />


  <ListView 
    android:id="@+id/ListView01" 
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:divider="#000000"
    android:dividerHeight="2dip"
    android:layout_below="@+id/separator"/>

</RelativeLayout>

这是我在 onCreate() 方法中的内容:

Typeface customFont = Typeface.createFromAsset(getAssets(),"fonts/zooper.ttf");
 Button mButton=(Button)findViewById(R.id.clicky);
        mButton.setText("Hi There");
        TextView clicky = (TextView)findViewById(R.id.clicky);
        clicky.setTypeface(customFont);

按钮中的文本是动态创建的,所以我必须从这里开始(现在它是静态的,但稍后“Hi There”将被替换为变量)。另一行文本将小得多,是静态的,并位于“Hi There”下方。我在谷歌上浏览了所有与我的问题很相似的东西,但我找不到一个可以适应我的问题的答案。

所以再一次,我需要一个带有两行单独文本的按钮,一个在另一个之上。顶行很大,动态创建并使用自定义字体。下面的文本行会小得多,是静态的,并且可以使用系统字体。

仅仅在按钮中嵌套一个 LinearLayout 真的很难吗?

任何帮助将非常感激。

4

1 回答 1

12
String s1;
String s2;
int n = s1.length();
int m = s2.length;

Typeface customFont = Typeface.createFromAsset(getAssets(),"fonts/zooper.ttf");
Spannable span = new SpannableString(s1 + "\n" +  s2);
//Big font till you find `\n`
span.setSpan(new CustomTypefaceSpan("", customFont), 0, n, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//Small font from `\n` to the end
span.setSpan(new RelativeSizeSpan(0.8f), n, (n+m+1), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
yourButton.setText(span);

在此处输入图像描述

于 2012-08-21T05:57:45.277 回答