我有一个textview显示从数据库加载的文本。有时文本是像b这样的单个字母,有时是两个单词,在诸如small word这样的两行上。

如果我显示一个字母,我希望字体更大。我尝试将HTML字体标签与size属性一起使用,并通过Html.fromHtml()传递字符串:

<font size='6'>d</font>


但是不幸的是,字体大小没有变化,Android似乎无法识别该属性。

我不想在px中提供字体大小,因为我有时想以不同的默认textsize在textviews中加载文本。



更多详情:
我有一个应用程序,向用户询问一系列问题。为此,它将在两个单独的textview中显示两个可能的答案。我的数据库中有数千个问题。该活动一次运行3分钟,我希望用户每三秒钟回答一次问题。

有时答案是单行单词,有时是两行,有时是单个字母。如果是单个字母,我感觉我是通过以相同的textsize显示字母来浪费空间,因此我想增加它的textsize。

在显示问题的字段中,我有一个类似的问题。有时问题需要两行,有时需要一个简短的单行单词。当需要一行时,我也想增加字体大小。

android - 如何根据加载的文本增加我的android textview中的文本大小?-LMLPHP

最佳答案

更新:

我创建了一个CustomTextView类,将ondraw方法动态覆盖为setTextSize,而不是设置每个TextView。

public class CustomTextView extends TextView {
  private static final String TAG = "CustomTextView";

  public CustomTextView(Context context) {
    super(context);
  }

  public CustomTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
  }

  public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
  }

  @TargetApi(Build.VERSION_CODES.LOLLIPOP)
  public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
  }

  @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
  }

  @Override protected void onDraw(Canvas canvas) {
    if (getLineCount() == 1) {
      setTextSize(40);
    } else {
      setTextSize(20);
    }
    super.onDraw(canvas);
  }
}


layout_custom.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_marginTop="98dp"
    >
  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:weightSum="1"
      >
    <com.example.blizzard.sof.CustomTextView
        android:id="@+id/customtextview1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="fill"
        android:layout_weight="0.5"
        android:background="@android:color/holo_blue_dark"
        android:gravity="center"
        android:textColor="@android:color/holo_red_dark"
        android:text="Word1 \nWord2"
        />

    <com.example.blizzard.sof.CustomTextView
        android:id="@+id/customtextview2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="fill"
        android:layout_marginLeft="16dp"
        android:layout_weight="0.5"
        android:background="@android:color/holo_blue_dark"
        android:gravity="center"
        android:textColor="@android:color/holo_red_dark"
        android:text="B"
        />
  </LinearLayout>
</LinearLayout>


确保用适当的软件包名称替换com.example.blizzard.sof.CustomTextView

预习:

android - 如何根据加载的文本增加我的android textview中的文本大小?-LMLPHP

上一个答案:

您可以使用AutoFitTextView库。

将所有文本视图转换为AutofitTextView,并确保为属性android:textSize="?"和设置适当的值
autofit:minTextSize="?"

样品:

android - 如何根据加载的文本增加我的android textview中的文本大小?-LMLPHP

09-12 15:48