Android编程实现自动调整TextView字体大小以适应文字长度的方法

本文实例讲述了Android编程实现自动调整TextView字体大小以适应文字长度的方法。分享给大家供大家参考,具体如下:

package com.test.android.textview;
import android.content.Context;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.TextView;
public class CustomTextView extends TextView {
  private static float DEFAULT_MIN_TEXT_SIZE = 10;
  private static float DEFAULT_MAX_TEXT_SIZE = 20;
  // Attributes
  private Paint testPaint;
  private float minTextSize;
  private float maxTextSize;
  public CustomTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    initialise();
  }
  private void initialise() {
    testPaint = new Paint();
    testPaint.set(this.getPaint());
    // max size defaults to the intially specified text size unless it is
    // too small
    maxTextSize = this.getTextSize();
    if (maxTextSize <= DEFAULT_MIN_TEXT_SIZE) {
      maxTextSize = DEFAULT_MAX_TEXT_SIZE;
    }
    minTextSize = DEFAULT_MIN_TEXT_SIZE;
  }
  /**
  * Re size the font so the specified text fits in the text box * assuming
  * the text box is the specified width.
  */
  private void refitText(String text, int textWidth) {
    if (textWidth > 0) {
      int availableWidth = textWidth - this.getPaddingLeft() -
        this.getPaddingRight();
      float trySize = maxTextSize;
      testPaint.setTextSize(trySize);
      while ((trySize > minTextSize) &&
          (testPaint.measureText(text) > availableWidth)) {
        trySize -= 1;
        if (trySize <= minTextSize) {
          trySize = minTextSize;
          break;
        }
        testPaint.setTextSize(trySize);
      }
      this.setTextSize(trySize);
    }
  }
  @Override
  protected void onTextChanged(CharSequence text, int start, int before,
    int after) {
    super.onTextChanged(text, start, before, after);
    refitText(text.toString(), this.getWidth());
  }
  @Override
  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    if (w != oldw) {
      refitText(this.getText().toString(), w);
    }
  }
}

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • android Listview模拟聊天界面

    本文实例为大家分享了android Listview模拟聊天界面的具体代码,供大家参考,具体内容如下 代码: package com.example.test; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; im

  • Android高仿微信聊天界面代码分享

    微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先给大家展示下实现效果图: OK,下面我们来看一下整个小项目的主体结构: 下面是Activity的代码: package com.way.demo; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import jav

  • IOS 聊天界面(自适应文字)的实现

    该篇文章主要介绍一个实现聊天界面的思路过程,源码可以在 源码链接获得,该工程实现聊天的基本功能,功能还不够完善,欢迎大家提PR,效果图如下所示 我希望通过相对简单的方式实现界面的布局,没有复杂的计算达到自适应的效果. iOS8新功能介绍 虽然self size cell最终没有在我的工程中用到,但是这是我曾经挖过的坑,所以在此做了简单的介绍. 在iOS 8 中,UITableView新增一项功能 self size cells,这是一项通过 UITableViewCell 的约束自动自动计算UI

  • Android编程实现泡泡聊天界面实例详解(附源码)

    本文实例讲述了Android编程实现泡泡聊天界面的方法.分享给大家供大家参考,具体如下: 昨天写了个界面,实现了Android泡泡聊天界面.运行结果如下,点击发送按钮,屏幕就显示Text的内容. 我也是在网上的一份源码的基础上更改的,整个泡泡界面的实现要点: (1)主界面其实就是一个List View (2)文字显示界面其实就使用了android:background="@drawable/incoming"这个东西.背景图片的格式是xxx.9.png,专门用来缩放的,不然显示效果非常

  • android仿微信聊天界面 语音录制功能

    本例为模仿微信聊天界面UI设计,文字发送以及语言录制UI. 1先看效果图: 第一:chat.xml设计 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" andro

  • 微信公众号开发 实现点击返回按钮就返回到聊天界面

    话不多说,请看代码 pushHistory(); function pushHistory() { var state = { title: "title", url: "#" }; window.history.pushState(state, "title", "#"); } if (typeof window.addEventListener != "undefined") { window.addE

  • android recyclerview模拟聊天界面

    本文实例为大家分享了android recyclerview模拟聊天界面的具体代码,供大家参考,具体内容如下 效果图: 实现代码: package com.itheima74.chatui; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7

  • Android仿微信语音聊天界面设计

    有段时间没有看视频了,昨天晚上抽了点空时间,又看了下鸿洋大神的视频教程,又抽时间写了个学习记录.代码和老师讲的基本一样,网上也有很多相同的博客.我只是在AndroidStudio环境下写的. --主界面代码-- public class MainActivity extends Activity { private ListView mListView; private ArrayAdapter<Recorder> mAdapter; private List<Recorder>

  • Android仿QQ、微信聊天界面长按提示框效果

    先来看看效果图 如何使用 示例代码 PromptViewHelper pvHelper = new PromptViewHelper(mActivity); pvHelper.setPromptViewManager(new ChatPromptViewManager(mActivity)); pvHelper.addPrompt(holder.itemView.findViewById(R.id.textview_content)); 使用起来还是很简单的 首先new一个PromptViewH

  • Android编程实现自动调整TextView字体大小以适应文字长度的方法

    本文实例讲述了Android编程实现自动调整TextView字体大小以适应文字长度的方法.分享给大家供大家参考,具体如下: package com.test.android.textview; import android.content.Context; import android.graphics.Paint; import android.util.AttributeSet; import android.widget.TextView; public class CustomTextV

  • Android编程开发实现TextView显示表情图像和文字的方法

    本文实例讲述了Android编程开发实现TextView显示表情图像和文字的方法.分享给大家供大家参考,具体如下: 从这个案例中我们可以学到当我们美化图片美化界面的时候可以在某一区域输入图片和文字混搭信息,第三张图片按比例缩小,第四张图像有超链接 布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andro

  • Android编程开发之TextView文字显示和修改方法(附TextView属性介绍)

    本文实例讲述了Android编程开发之TextView文字显示和修改方法.分享给大家供大家参考,具体如下: 一. 新建一个Activity 和 Layout 首先在layout文件夹中新建一个activity_main.xml,在新建工程的时候一般默认会新建此xml文件,修改其代码如下: activity_main.xml 代码 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x

  • Android编程获取手机屏幕分辨率大小的方法

    本文实例讲述了Android编程获取手机屏幕分辨率大小的方法.分享给大家供大家参考,具体如下: import android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics; import android.widget.TextView; public class A03Activity extends Activity { private TextView mTextView01; /** C

  • Android编程实现自定义Dialog的大小自动控制方法示例

    本文实例讲述了Android编程实现自定义Dialog的大小自动控制方法.分享给大家供大家参考,具体如下: Android应用开发中,无论是出于功能还是增加用户体验,弹出对话框(Dialog)进行一些操作提示是非常必要的.Android系统有自带的各种样式的对话框,但是根据项目需要可能从效果上满足不了需求,只时我们就要自定义对话框. 我们可以自定义Dialog的样式及展示布局,做出我们想要的对话框,但有的时候,我们做出的对话框要么显示太大,要么显得太小,或者是在不同的页面大小不一样,需要做个统一

  • Android编程处理窗口控件大小,形状,像素等UI元素工具类

    本文实例讲述了Android编程处理窗口控件大小,形状,像素等UI元素工具类.分享给大家供大家参考,具体如下: /** * 处理窗口控件大小,形状,像素等工具类 * * @author chen.lin * */ public class UITools { /** * 把像素转化为dp * * @param context * @param px * @return */ public static int px2dip(Context context, float px) { float d

  • Android编程开发之TextView控件用法(2种方法)

    本文实例讲述了Android编程开发之TextView控件用法.分享给大家供大家参考,具体如下: 这里我们会讲讲常用控件的使用. 在今后的大多数章节里面也是一样的,我们会具体的说说某些控件的用法.因为只要把这些控件组合在一起它们就是一个应用了. 好吧我们直接看看这个控件怎么用. 细心的同学会发现,其实这个控件的内容是定义在values文件夹里面的strings.xml中的. 那么我们只需要给它加一段代码: 复制代码 代码如下: <string name="test">Wel

  • Android编程开发之TextView单击链接弹出Activity的方法

    本文实例讲述了Android编程开发之TextView单击链接弹出Activity的方法.分享给大家供大家参考,具体如下: 话不多说直接上码: 核心源码: package com.example.textview4; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.SpannableString; import android.tex

  • Android编程实现获得内存剩余大小与总大小的方法

    本文实例讲述了Android编程实现获得内存剩余大小与总大小的方法.分享给大家供大家参考,具体如下: public class memInfo { // 获得可用的内存 public static long getmem_UNUSED(Context mContext) { long MEM_UNUSED; // 得到ActivityManager ActivityManager am = (ActivityManager) mContext.getSystemService(Context.A

  • Android Studio设置主题与字体大小图文教程

    一.Android Studio 主题的设置 1.1 设置Android Studio 自带的主题及包名字体大小 1.2 导入第三方主题: 下载了第三方的主题,然后执行: File-->Import Settings-->下载jar包所在位置 即可 二.Android Studio 字体的设置 2.1 编辑界面字体设置 Appearance-->Editor -->Colors&Fonts-->Font-->Save As - --> 总结 以上就是And

随机推荐