相关疑难解决方法(0)

自动适应TextView for Android

背景

很多时候,我们需要将TextView的字体自动调整到给定的边界.

问题

可悲的是,即使有很多线程和帖子(和建议的解决方案)谈论这个问题(例如这里,这里这里的例子),它们都没有真正运作良好.

这就是为什么,我决定测试每一个,直到找到真正的交易.

我认为来自这样一个textView的要求应该是:

  1. 应允许使用任何字体,字体,样式和字符集.

  2. 应该处理宽度和高度

  3. 没有截断,除非文本由于限制而无法适应,我们已经给它(例如:文本太长,可用大小太小).但是,如果我们愿意,我们可以请求水平/垂直滚动条,仅适用于那些情况.

  4. 应该允许多线或单线.如果是多行,请允许最大和最小行.

  5. 计算速度不应该慢.使用循环找到最佳尺寸?至少要优化它,不要每次增加1个采样.

  6. 在多行的情况下,应该允许更喜欢调整大小或使用更多行,和/或允许使用"\n"字符自己选择行.

我试过的

我已经尝试了很多样本​​(包括链接的那些,我已经写过了),而且我也尝试修改它们来处理这些情况,我已经谈过了,但没有一个真正起作用.

我做了一个示例项目,让我可以直观地看到TextView是否正确自动匹配.

目前,我的示例项目只是随机化文本(英文字母加上数字)和textView的大小,并让它保持单行,但即使这样也不适用于我尝试的任何样本.

这是代码(也可在此处获得):

文件 res/layout/activity_main.xml

<RelativeLayout 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" tools:context=".MainActivity">
  <Button android:id="@+id/button1" android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true" android:text="Button" />
  <FrameLayout android:layout_width="match_parent"
    android:layout_height="wrap_content" android:layout_above="@+id/button1"
    android:layout_alignParentLeft="true" android:background="#ffff0000"
    android:layout_alignParentRight="true" android:id="@+id/container"
    android:layout_alignParentTop="true" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

文件 src/.../MainActivity.java

public class MainActivity extends Activity
  {
  private final Random        _random            =new Random();
  private static final String ALLOWED_CHARACTERS ="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";

  @Override
  protected void onCreate(final Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState); …
Run Code Online (Sandbox Code Playgroud)

android font-size textview layoutparams

229
推荐指数
5
解决办法
18万
查看次数

自动调整EditText

Android最近添加了对基于视图大小和最小和最大文本大小调整TextViews文本大小的支持.
https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview.html

不幸的是,它们不支持EditTexts,那么EditText还有其他选择吗?

android autosize android-edittext

14
推荐指数
1
解决办法
6183
查看次数