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"
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>
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>
AlignTextView
,需要进行选择复制的时候使用CBAlignTextView
。AlignTextView
与CBAlignTextView
在对齐的时候不会对英文单词等进行考虑,它们都是以字符(character)为基础的,不是词(word)。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.
有任何问题,欢迎发送邮件到app@codeboy.me交流.
本章介绍如何使用Java在Word文档中应用不同的字体样式和对齐方式。 通常,字体样式包含:字体大小,类型,粗体,斜体和下划线。 对齐分为左,中,右和对齐。 字体样式 以下代码用于设置不同的字体样式 - import java.io.File; import java.io.FileOutputStream; import org.apache.poi.xwpf.usermodel.Vertica
结构体字节对齐 接下来我们学习的C中的第三种空间-结构体空间,结构体空间是将基本数据类型或者是其它构造数据类型打包的工具。打包就是结构体最主要的一种功能,在打包过程中,我们要引入一个新的概念-字节对齐。这个打包不是随随便便就OK的,不像我们装行李只要全部装进去就好了。 首先我们先来看一段代码,我们将一个结构体里面包含了一个char和int类型,然后声明一个结构体变量,这个变量在内存中占的大小会是1
问题内容: 如何在图标右侧显示元素并垂直对齐?我应该漂浮在左边吗? 问题答案: 一种方法是使用display并将其 居中 对齐-参见下面的演示:
例子 #include <stdio.h> typedef struct { char a; int b; } ST_A; int main(void) { printf("sizeof(ST_A)=%ld\n",sizeof(ST_A)); } 技巧 在上面的程序里,ST_A结构体的内存布局默认是这样的: Offset 1byte 1byte
本文向大家介绍请你说一说操作系统中的结构体对齐,字节对齐相关面试题,主要包含被问及请你说一说操作系统中的结构体对齐,字节对齐时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1、原因: 1)平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。 2)性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐
我提到了一个自定义字体垂直定位的问题。下面的截图很好地说明了问题。 系统字体: 自定义字体(苦涩,从谷歌字体下载。ttf格式):