字体对齐的textview

Related tags

android textview
Overview

AlignTextView

字体对齐的TextView

Maven Central

截图

系统要求

Android 4.0以上

快速使用

build.gradle加入dependencies

compile 'me.codeboy.android:align-text-view:2.3.2'

AlignTextView (不支持选择复制,在不需要进行选择复制的情况下使用,排版效果好)

 <me.codeboy.android.aligntextview.AlignTextView
        android:id="@+id/alignTv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

CBAlignTextView (新的版本,支持选择复制,排版效果比较的好)

<me.codeboy.android.aligntextview.CBAlignTextView
        android:id="@+id/cbAlignTv"
        android:textIsSelectable="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

如果需要支持android默认的选择复制,请在xml中加入以下代码:

android:textIsSelectable="true"

相关方法

1.CBAlignTextView

CBAlignTextView中增加了以下方法获取TextView的文本内容,请不要使用getText()获取

getRealText()

由于Android L(5.0)之后对中文的版本进行了变化,造成不能由中文标点作为行首,所以为了能够使CBAlignTextView看起来更加工整,建议将中文符号用英文符号替换(默认不转换),可以通过以下三种方式转化

  • 使用转化函数转化标点符号:

     CBAlignTextViewUtil.replacePunctuation(String text)
    
  • 在设置CBAlignTextView文本前(setText),调用以下方法:

     setPunctuationConvert(boolean convert)
    
  • 如果需要多次设置文本,或者复用组件(如RecyclerView中),在后面每次设置文本前,请调用以下方法:

    reset()
    
  • 可以直接在xml布局中进行设置

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:cb="http://schemas.android.com/apk/res-auto"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical">
       <me.codeboy.android.aligntextview.CBAlignTextView
             android:id="@+id/cbAlignTextView"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             cb:punctuationConvert="true"
             android:textIsSelectable="true"
             android:textSize="14dsp"/>    
     </LinearLayout>
    

2.AlignTextView

AlignTextView是旧的版本,不支持选择复制,但是可以自定义最后一行的对齐方式

setAlign(Align align)

设置每一段最后一行对齐方式,默认居左对齐,同时也可以在xml注释中设置对其方式:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">
  <me.codeboy.android.aligntextview.AlignTextView
        android:id="@+id/alignTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        cb:align="center"
        android:textSize="14dsp"/>    
</LinearLayout>

使用说明

  1. 不用进行选择复制的时候使用 AlignTextView,需要进行选择复制的时候使用CBAlignTextView
  2. AlignTextViewCBAlignTextView在对齐的时候不会对英文单词等进行考虑,它们都是以字符(character)为基础的,不是词(word)。
  3. 使用CBAlignTextView时建议进行中文标点的转换。
  4. demo项目位与app下,可以单独提取出me.codeboy.android.aligntextview.AlignTextView和me.codeboy.android.aligntextview.CBAlignTextView使用。

更新历史

v2.3.2

  1. 修复CBAlignTextView多次设置文本后空行的问题。

v2.3.1

  1. 修复CBAlignTextView在xml中设置text时空指针问题。
  2. 修复CBAlignTextView设置空文本无效问题。

License

Copyright 2016 Yuedong.li

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

有任何问题,欢迎发送邮件到[email protected]交流.

Issues
  • lineSpacingExtra 问题

    lineSpacingExtra 问题

    很棒的一种排版方法 只是我在使用过程中发现 lineSpacingExtra 设置越大 文字最后一行有可能会导致显示不全...

    opened by asker517 5
  • 当文本内容过多时候,滑动特别卡顿

    当文本内容过多时候,滑动特别卡顿

    卡顿到不能接受

    opened by ifbugfrog 5
  • CBAlignTextView在Listview或者Recyclerview中有时候settext无效bug

    CBAlignTextView在Listview或者Recyclerview中有时候settext无效bug

    CBAlignTextView在我的项目里Listview中,如果手指一直拖动listview滑动,屏幕显示外的第一条数据就不会显示,如果是随意滑动的话就会显示.(比如listview一个屏幕只能显示5条数据,那么我拖动listview往上滑,那么第6条数据滑进屏幕的时候CBAlignTextView是不显示text的,但是如果我是快速滑动一下就松开,那么第6条数据是可以显示的。)后面我特地从githup下了你的example运行下,发现你的example里也有无效的情况。

    screenshot_2018-01-04-14-13-08-250_me codeboy android aligntextview example

    opened by DarkSherlock 4
  • 用到html的时候图片显示不正常

    用到html的时候图片显示不正常

    rs

    opened by luyangliu616 4
  • 底部空白问题 & 显示不全

    底部空白问题 & 显示不全

    我在5.1.1的机器上还有6.0.1机型上跑 表现近乎完美,但是我用Gennymotion模拟器跑 低分辨率的设备上发现(480 * 800 还有960 * 540 )底部空白问题还是偶尔存在,系统版本号是4.1.1 . 我是用在recyclerview中的。而这个多余的空白表现的很明显,会错乱。同时也有时候会出现文字没有显示全就被截断了. 感觉是Line size 计算有问题

    opened by asker517 3
  • 在RecyclerView中 会错乱

    在RecyclerView中 会错乱

    如题,在RecyclerView列表当中,内容会错乱,更换系统的TextView 正常

    opened by pencilso 2
  • settext(

    settext("");不清空文字内容

    添加了 该方法 punctuationConvert

    opened by gyyak46 2
  • 跳转页面文本高度会改变

    跳转页面文本高度会改变

    使用AlignTextView加载长文本, 限制最大行数10行 返回桌面,或者启动其他activity, 文本高度会缩小

    opened by August1993 0
  • AlignTextView添加padding显示异常

    AlignTextView添加padding显示异常

    如果给AlignTextView添加padding,那么内容会挤在一起。

    opened by feimenggo 2
  • 可以支持富文本

    可以支持富文本

    在process(boolean setText)方法中的settext之前处理newText,例如 SpannableString spannableString = new SpannableString(newText); int a = newText.toString().indexOf(data); Log.e(TAG, "a=" + a); while (a != -1) { ForegroundColorSpan colorSpan = new ForegroundColorSpan(ContextCompat.getColor(getContext(), R.color.colorAccent)); spannableString.setSpan(colorSpan, a, data.length() + a, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); a = newText.toString().indexOf(data, a + 1); Log.e(TAG, "a=" + a); } setText(spannableString);

    opened by GuilinSir 0
  • 底部出现大量空白

    底部出现大量空白

    底部相当大的空白,无法使用。

    opened by nobita0522 0
  • Spann不起作用了

    Spann不起作用了

    Spann不起作用了

    opened by chuangbin 2
  • RecyclerView中使用AlignTextView或CBAlignTextView折叠展开错乱问题

    RecyclerView中使用AlignTextView或CBAlignTextView折叠展开错乱问题

    所有的item的AlignTextView或CBAlignTextView在XML中设置android:ellipsize="end"和android:maxLines="4"后,点击第一页屏幕内可以见点击item的展开显示全部内容后,上滑第二页的item可以见的时候,会有某天个item默认是展开显示全部内容的,内容文本显示也有些不对比如: EOS从5.2美元(这是原本内容中的某一个部分),显示时:EOS从5. 2美元(5.后面空格了一大tab键) 这是在adapter中设置的点击事件 holder.alignTextView.reset(); holder.alignTextView.setText(s); holder.alignTextView.setOnClickListener(new View.OnClickListener() { boolean flag = true; @Override public void onClick(View v) { if (flag) { flag = false; holder.alignTextView.setSingleLine(flag); holder.alignTextView.setEllipsize(null); // 展开 } else { flag = true; holder.alignTextView.setEllipsize(TextUtils.TruncateAt.END); // 收缩 holder.alignTextView.setMaxLines(4); } } });

    opened by chenxiaofei910714 0
  • RecyclerView中使用AlignTextView会产生错乱问题

    RecyclerView中使用AlignTextView会产生错乱问题

    麻烦问下RecyclerView中使用AlignTextView会产生错乱问题目前还是没有解决么?手动requestLayout();的方法也是无效

    opened by zzsakurazz 1
  • 底部出现大量空白

    底部出现大量空白

    android:lineSpacingExtra="9dp" 设置了这个属性后,末尾会出现大量的空白,是因为每次重绘的行间距加在了一起,是吗?

    opened by xfy-c 2
Releases(2.0)
Owner
木小桓
https://www.codeboy.me
木小桓