ボタンをonLayoutから再配置するときにボタンテキストを整列させる方法は? 多くの横軸を持つグラフがあり、各軸には次の順序で配置された3つのボタンがあります
ここで、グラフ上のすべてのボタンが適切に整列し、必要な場所に配置されるように再配置する必要があります。青いボタンのテキストの配置を除いて、すべてが正常に機能します。重力を中心にすると、高さは青と赤のボタンを合わせた高さと見なされ、テキストは赤のボタンの半分の後ろに配置されます。何も言わない場合は、ボタンの左端に青い小さな矢印がある黒い領域にありますが、テキストを重力下とcent_horizontalの青い領域に配置したいと思います。興味深いのは、私の重心の下と中央の水平がタブレットでうまく機能することです。
ここに私の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);
}
タブレットと電話で同じ高さを使用しようとしましたが、どちらかでは見栄えが悪いため、異なる高さを使用する必要がありました。