以编程方式将文本集中在Android的Textview中

时间:2013-12-21 02:08:31

标签: android user-interface textview center centering

我创建了一个扩展Android的Text视图的类。我试图水平和垂直居中文本。文本显示为水平居中但不垂直居中。

我试过了两个:

setGravity(Gravity.CENTER);

setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

我的课程如下:

public class NumberView extends TextView
{
  private Paint circlePaint;
  private int radius;

public NumberView(Context context)
{
    super(context);
    setText("0");
    circlePaint = new Paint();
    circlePaint.setColor(Color.BLUE);

//        setGravity(Gravity.CENTER);
    setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
    setBackgroundColor(Color.rgb(0xf1, 0xf1, 0xf1));

    setTypeface(null, Typeface.BOLD);
    setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);

}

@Override
protected void onDraw(Canvas canvas) {
    // draw circle at center of canvas
    super.onDraw(canvas);
    int width = getWidth();
    int height = getHeight();
    radius = Math.min(width, height);
    radius /= 2;
    canvas.drawCircle(width/2, height/2, radius, circlePaint);

    //super.onDraw(canvas);
}

}

我正在添加NumberView作为ExpandableList视图的一部分。下面是我如何将布局的可扩展列表视图:

    listView = new ExpandableListView(this);
    listView.setAdapter(listAdapter);
    TextView emptyView = new TextView(this);

    listView.setEmptyView(emptyView);
    mainLayout.addView(listView,
            new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.MATCH_PARENT , 2));

2 个答案:

答案 0 :(得分:1)

TextView emptyView = new TextView(this);

将此更改为

NumberView numberView=new NumberView(this);

答案 1 :(得分:0)

您必须使用您创建的NumberView类而不是TextView 它会起作用,你也必须在NumberView上设置参数。