如何根据加载的文本增加我的android textview中的文本大小()

仰天大笑出门去,我辈岂是蓬蒿人。这篇文章主要讲述如何根据加载的文本增加我的android textview中的文本大小?相关的知识,希望能为你提供帮助。
我有一个textview显示我从数据库加载的文本。有时文本是像b这样的单个字母,有时它是两个字,像small word一样超过两行。
如果我显示一个字母,我希望字体大小更大。我尝试使用带有size属性的html字体标记,并通过Html.fromHtml()传递字符串:

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

但不幸的是,字体大小不会改变,android似乎无法识别该属性。
我不想在px中给出字体大小,因为我有时想在textviews中加载带有不同默认textize的文本。
更多细节:我有一个应用程序,询问用户一系列问题。为此,它在两个单独的textviews中显示两个可能的答案。我的数据库中有几千个问题。该活动一次运行3分钟,我希望用户每三秒回答一个问题。
有时答案是单行词,有时它需要两行,有时它只是一个字母。如果它是一个字母,我觉得我通过在同一文本中显示字母来浪费空间,所以我想增加它的文本化。
在显示问题的字段中,我有类似的问题。有时问题需要两行,有时需要一个简短的单行词。当它需要一行时我也想增加字体大小。
如何根据加载的文本增加我的android textview中的文本大小()

文章图片

答案更新:
我创建了一个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 Word2" /> < 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 textview中的文本大小()

文章图片

上一个答案:
您可以使用AutoFitTextView库。
将所有文本视图转换为AutofitTextView,并确保为属性android:textSize="?"autofit:minTextSize="?"设置适当的值。
样品:
如何根据加载的文本增加我的android textview中的文本大小()

文章图片

另一答案如果我正确理解了您的问题,您需要根据显示的字母数设置文本大小。
【如何根据加载的文本增加我的android textview中的文本大小()】你可以这样做:
TextView textView = (TextView) findViewById (R.id.your_layout); if (string.length() > 10) { textView.setTextSize(10); else { textView.setTextSize(20); } textView.setText(string);

另一答案
TextView textView = (TextView) findViewById (R.id.your_layout); textView.setTextSize(constant-textView.getText().toString().length);

获取TextView文本,并根据长度设置字体大小。例如 - 如果TextView包含一个字母“b”,那么大小将恒定 -1,如果它包含两个单词,如“Android Is Cool”,那么大小将是恒定的 -15,这是更小的。
另一答案你为什么不这样做呢?
textview.setText(“Some text”); textview.post(new Runnable() { @Override public void run() { if(textview.gettext().toString().length==1) { textView.setTextSize(10.0f); }else{ int lineCount = textview.getLineCount(); // Use lineCount here if(lineCount==1) { textView.setTextSize(20.0f); }else if(lineCount==2) { textView.setTextSize(30.0f); } } } });

这应该可以让您根据文本保留文本大小。

    推荐阅读