Как выравнивать текст кнопки при изменении положения кнопки onLayout? У меня есть график, который имеет много горизонтальных осей. Каждая ось имеет три кнопки, расположенных в следующем порядке: Выровнять текст кнопки после повторной установки кнопки onLayout в Android
Теперь я должен переставить так, чтобы все кнопки на графике были правильно расположены и размещены там, где мне нужно. Все отлично работает, за исключением выравнивания текста синей кнопки. Если я скажу, что гравитация в центре, она принимает высоту как совмещенную высоту синих и красных кнопок и помещает текст наполовину за красную кнопку. Если не сказать ничего на черной области, где у нас есть только голубая стрелка на левом конце кнопки, но я хочу, чтобы текст находился на синей области с гравитационным дном и центровым горизонтальным. Интересная вещь - мое гравитационное дно, а центральная горизонтальная работа отлично подходит для планшетов.
Вот мой 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);
}
Я попытался использовать ту же высоту для планшета и телефона не хорошо выглядеть на одной из них, так что я пришлось использовать разные высоты.