Java 如何在Android中为按钮文本使用两种不同的字体大小?

Java 如何在Android中为按钮文本使用两种不同的字体大小?,java,android,android-layout,textview,android-ui,Java,Android,Android Layout,Textview,Android Ui,如何为ImageButton或button实现按钮背景,其中包含两个文本视图,每个文本视图使用不同的字体大小?我不能使用静态图像作为背景,我需要使用xml或编程实现这一点 这是一个数字键盘,它携带一个数字值和一组字母,每个字母使用不同的字体大小,需要设置为按钮文本 下面是一些突然出现在我脑海中的建议,但似乎有局限性,因为我希望重用UI组件并避免代码重复 创建包含2个文本字段的布局xml,并将其设置为按钮上的背景。但是,如何获取这些textview字段的引用,以便在MyActivity.java

如何为ImageButton或button实现按钮背景,其中包含两个文本视图,每个文本视图使用不同的字体大小?我不能使用静态图像作为背景,我需要使用xml或编程实现这一点

这是一个数字键盘,它携带一个数字值和一组字母,每个字母使用不同的字体大小,需要设置为按钮文本

下面是一些突然出现在我脑海中的建议,但似乎有局限性,因为我希望重用UI组件并避免代码重复

  • 创建包含2个文本字段的布局xml,并将其设置为按钮上的背景。但是,如何获取这些textview字段的引用,以便在MyActivity.java中设置这些字段的值呢

  • 使用分层列表?TextView的引用仍然存在相同的问题

  • 或者创建一个自定义视图,并对步骤1中提到的布局进行充气。这个解决方案解决了我的问题

  • 对于此UI需求是否存在其他解决方案


    谢谢。

    对于您的按钮,您可以使用如下代码

    别忘了把字体放在你的资产文件夹里

     Button btnA=(Button) findViewById(R.id.button1);
     Typeface typeface = Typeface.createFromAsset(getAssets(), "yourFont.ttf");
     btnA.setText("my custom font");
     btnA.setTypeface(typeface);
     btnA.setTextSize(20);//as per your size
    
    如需更多参考,请参阅


    如果有帮助,请按第二个按钮,让我知道谢谢…

    希望这会有所帮助。这当然不是唯一的解决方案,但它是一个非常简单的解决方案。在xml中添加xml部分,而不是按钮

    XML


    您可以使用Html.fromHtml()方法,该方法接受Html标记,显示它们的效果,并将它们作为字符串返回。因此,可以使用setText()将其应用于按钮。这里有一个来自Commonware的链接,说明这个方法支持哪些标签,但我现在没有。你必须搜索它我的建议是使用带有相对图像的ImageButton:)可能这一个会对您有所帮助..单击[此处][1][1]:谢谢,我得到了我想要的。谢谢你的帮助,谢谢。类似于Oya的建议。
    <LinearLayout
        android:id="@+id/button_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp" 
            android:text="5"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="12sp" 
            android:text="ABC"/>
    
    </LinearLayout>
    
        LinearLayout button= (LinearLayout)findViewById(R.id.button_layout);
        button.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
                // TODO DO whatever you want to do here
    
            }
        });