如何让TextView中的textview文字居中显示示

重写TextView,实现圆形背景,文本居中显示-爱编程
重写TextView,实现圆形背景,文本居中显示
最近,在做考试试题排版,产品提出题号希望显示成圆形背景,序号文本居中显示。
(有点问题:文本没有绝对居中,暂时没做处理。)
为此,我采取的方式是重写TextView的onDraw方法,绘制一个圆形背景。
具体代码如下:
package com.example.
import android.content.C
import android.content.res.TypedA
import android.graphics.*;
import android.util.AttributeS
import android.widget.TextV
* 自定义形状的TextView 圆形 椭圆形
* Created by cjy on 16/11/30.
public class CustomShapTextView extends TextView{
private Context mC
private Paint mP
* 画笔颜色 默认灰色
private int mPaintNormalColor = 0xFFDCDCDC;
* 画笔颜色 选中时的颜色,默认灰色
private int mPaintSelectColor = 0xFFDCDCDC;
* 是否填充颜色
private boolean isFillColor =
public CustomShapTextView(Context context) {
super(context);
public CustomShapTextView(Context context, AttributeSet attrs) {
super(context, attrs);
initPaint(context,attrs);
public CustomShapTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initPaint(context,attrs);
* 初始化画笔和自定义属性
* @param context
* @param attrs
private void initPaint(Context context,AttributeSet attrs){
mContext =
TypedArray typeArray = context.obtainStyledAttributes(attrs, R.styleable.CustomShapTextView);
mPaintNormalColor = typeArray.getColor(R.styleable.CustomShapTextView_paintNormalColor,mPaintNormalColor);
mPaintSelectColor = typeArray.getColor(R.styleable.CustomShapTextView_paintSelectColor,mPaintSelectColor);
mPaint = new Paint();
* 调用onDraw绘制边框
* @param canvas
protected void onDraw(Canvas canvas) {
mPaint.setAntiAlias(true);
if (isFillColor) {
//画笔颜色
mPaint.setColor(mPaintSelectColor);
mPaint.setStyle(Paint.Style.FILL);
//画笔颜色
mPaint.setColor(mPaintNormalColor);
//画笔样式:空心
mPaint.setStyle(Paint.Style.STROKE);
//创建一个区域,限制圆弧范围
RectF rectF = new RectF();
//设置半径,比较长宽,取最大值
int radius = getMeasuredWidth() & getMeasuredHeight() ? getMeasuredWidth() : getMeasuredHeight();
//设置Padding 不一致,绘制出的是椭圆;一致的是圆形
rectF.set(getPaddingLeft(),getPaddingTop(),radius-getPaddingRight(),radius-getPaddingBottom());
//绘制圆弧
canvas.drawArc(rectF,0,360,false,mPaint);
//最后调用super方法,解决文本被所绘制的圆圈背景锁覆盖的问题
super.onDraw(canvas);
* 设置是否填充颜色
* @param isFill
public void setFillColor(boolean isFill){
this.isFillColor = isF
invalidate();
为了颜色设置的灵活性,颜色属性自定义attr.xml
&?xml version="1.0" encoding="utf-8"?&
&resources&
&declare-styleable name="CustomShapTextView"&
&!-- Default Paint Color (color). --&
&attr name="paintNormalColor" format="reference|color"/&
&!-- Selected Paint Color (color). --&
&attr name="paintSelectColor" format="reference|color"/&
&/declare-styleable&
&/resources&
这样子,我们就可以直接在xml中使用自定义的TextView了,代码如下:
&?xml version="1.0" encoding="utf-8"?&
&RelativeLayout xmlns:android="/apk/res/android"
xmlns:app="/apk/res/com.example.myapp"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:paddingTop="15dp"
android:paddingBottom="15dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
&com.example.myapp.CustomShapTextView
android:id="@+id/circle_tv_view"
android:layout_width="60dp"
android:layout_height="60dp"
android:background="@color/blue"
android:text="A"
android:textSize="16sp"
android:textColor="@drawable/tv_view_color"
android:gravity="center"
android:paddingLeft="12dp"
android:paddingTop="12dp"
android:paddingRight="12dp"
android:paddingBottom="12dp"
app:paintNormalColor="@color/gray"
app:paintSelectColor="@color/blue"
&/RelativeLayout&
现在效果是出来,但是发现圆角虽然画上了,但是文字被覆盖了。
猜测是我们绘制的图层覆盖了文字。
因为自己要画的东西是在下面的,所以要先画上去,然后在让父类(TextView)画他的文字。
所以调整了super.onDraw方法的调用顺序:放到最后调用。
版权所有 爱编程 (C) Copyright 2012. . All Rights Reserved.
闽ICP备号-3
微信扫一扫关注爱编程,每天为您推送一篇经典技术文章。该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
textview文字滚动效果:
&TextView android:layout_width="100px"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:ellipsize="marquee"
android:focusable="true"
android:marqueeRepeatLimit="marquee_forever"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"
android:text="xxxxxxxxxxxxxxxxxxxxxxxxxx"
&/TextView&
给个焦点吧,滑动的效果用 marquee 就好不行的换成 animation
不是您所需,查看更多相关问题与答案
德问是一个专业的编程问答社区,请
后再提交答案
没有相关问题
关注该问题的人
共被浏览 (7336) 次如何自动滚动NSTextViewcocoa的窗口垂直居中的文本?-cocoa,滚动scroll,nstextview,nsscrollview-CodeGo.net
如何自动滚动NSTextViewcocoa的窗口垂直居中的文本?
我创建一个文本编辑器与NSTextView内NSScrollView并想自动滚动的TextView只要插入文本,从而使插入的文本垂直居中的窗口(或在TextView中)。我发现这个示例代码滚动到滚动型的顶部,而不能真正了解它是如何工作的。我已经围绕这个代码,但我TextView的似乎只是跳上跳下,没有任何逻辑。任何人都可以
- (void)scrollToTop:
NSPoint newScrollO
// assume that the scrollview is an existing variable
if ([[scrollview documentView] isFlipped]) {
newScrollOrigin=NSMakePoint(0.0,0.0);
newScrollOrigin=NSMakePoint(0.0,NSMaxY([[scrollview documentView] frame])
-NSHeight([[scrollview contentView] bounds]));
[[scrollview documentView] scrollPoint:newScrollOrigin];
本文地址 :CodeGo.net/2714105/
-------------------------------------------------------------------------------------------------------------------------
1.嗯,我找到了解决办法:
NSRect insertionRect=[[self layoutManager] boundingRectForGlyphRange:[self selectedRange] inTextContainer:[self textContainer]];
NSPoint scrollPoint=NSMakePoint(0,insertionRect.origin.y+insertionRect.size.height+2*scrolling-[[NSScreen mainScreen] frame].size.height);
[self scrollPoint:scrollPoint];
其中的TextView是IBOutlet到TextView的和scrolling是在从其中插入点应设在底部的像素距离。只是玩弄它,了解它是如何工作的。
本文标题 :如何自动滚动NSTextViewcocoa的窗口垂直居中的文本?
本文地址 :CodeGo.net/2714105/
Copyright (C) 2017 CodeGo.netTableLayout中动态生成的Textview,怎么让它能居中显示?  Java code  
TableLayout tbl=(TableLayout) findViewById(R.id.TableLayout1);
String Str=randomString(130);
for(int i=0; i&10;i++){
TableRow row=new TableRow(this);
for(int j=0;j&13;j++){
TextView txt=new TextView(this);
txt.setText(Str.substring(j+13* i,j+13* i+1));
txt.setTextSize(20);
row.addView(txt,j);
tbl.addView(row);
回答1:你要哪个居中,textview居中?text居中?
试试 TableRow.setGravity(int gravity)
txt.setGravity(Gravity.CENTER);}

我要回帖

更多关于 ios textview文字居中 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信