在Android中重新定位onLayout按钮后对齐按钮文本

时间:2013-06-24 17:08:45

标签: android android-layout button text-align

当我们从onLayout重新定位Button时,如何对齐Button文本?我有一个图表,其中有许多水平轴,每个轴有三个按钮按以下顺序排列enter image description here

现在我必须重新定位,以便图表上的所有按钮都能正确对齐并放置在我需要的地方。除了蓝色按钮的文本对齐外,每件事都可以正常工作。如果我说重力作为中心,它将高度假定为蓝色和红色按钮的组合高度,并将文本放在红色按钮的后面一半。如果在黑色区域没有说什么,我们只是在按钮左端有蓝色小箭头,但我希望文本在重力底部和cent_horizo​​ntal的蓝色区域。有趣的是我的重力底部和中心水平适用于平板电脑。

这是我的OnLayout代码:

    protected void onLayout(boolean changed, int l, int t, int r, int b) {
    super.onLayout(changed, l, t, r, b);


    //this.strikeButton.layout(left,top,right,bottom);
    int height = this.getMeasuredHeight();
    int width = this.getMeasuredWidth();
    int buttonWidth = this.upArrowButton.getMeasuredWidth();
    int buttonHeight = (2*height)/5;
    int right = width - buttonWidth;

    int left = 0;
    int top = height / 2;
    top -= buttonHeight / 2;

    int bottom = top + buttonHeight;
    this.strikePriceButton.layout(left, top, right, bottom);
    this.upArrowButton.layout(left, 0, right, height / 2);
    this.downArrowButton.layout(left, height / 2, right, height);
    this.upArrowButton.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL);
    this.downArrowButton.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL);
    this.strikePriceButton.setGravity(Gravity.CENTER);
    }

这是我的OnMeasure功能:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    this.setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), App.isTablet(context) ? 96 : 128);
}

我尝试在平板电脑和手机上使用相同的高度,但在其中一个上看起来不太好,所以我不得不使用不同的高度。

1 个答案:

答案 0 :(得分:0)

只需使用dp而不是使用高度和宽度值。