Смежные вопросы: здесь и здесь .Но они не отвечают на мой вопрос.
Я пытаюсь динамически добавлять кнопки во время выполнения, поэтому существует минимальный этап проектирования xml.Все кнопки создаются во время выполнения.Все работает нормально, пока четыре кнопки не добавляются в одну строкуЭто происходит неправильно, когда пятая кнопка добавляется в GridLayout.
Я пытаюсь повлиять на ограничения, чтобы избежать ошибки, которую я получаю при добавлении пятой кнопки: -
D/android.widget.GridLayout: horizontal constraints: x1-x0>=231, x2-x1>=231, x3-x2>=231, x4-x3>=231, x5-x4>=231, x5-x0<=1080 are inconsistent; permanently removing: x5-x0<=1080.
В моем GridLayout есть пять кнопок, которые пытаются сжать себя, но они не вписываются в 1080dp
, как 231dp*5=1155
.
1. Откуда берется 231dp
?
Вывод из журналов показываетчто Button.getMinimumWidth()
было 231dp
(прокрутите вправо, чтобы увидеть последний параметр): -
D/CommandCenter: Btn <0> details:X<0.0>Y<802.0> || W<270>H<126> || PadL<31>PadR<31>PadT<25> || MarL<0>MarR<0>MarT<0> || L<0> || MinW<231>
D/CommandCenter: Btn <1> details:X<270.0>Y<802.0> || W<270>H<126> || PadL<31>PadR<31>PadT<25> || MarL<0>MarR<0>MarT<0> || L<270> || MinW<231>
D/CommandCenter: Btn <2> details:X<540.0>Y<802.0> || W<270>H<126> || PadL<31>PadR<31>PadT<25> || MarL<0>MarR<0>MarT<0> || L<540> || MinW<231>
I/zygote: Waiting for a blocking GC Debugger
D/CommandCenter: Btn <3> details:X<810.0>Y<802.0> || W<270>H<126> || PadL<31>PadR<31>PadT<25> || MarL<0>MarR<0>MarT<0> || L<810> || MinW<231>
2. Измените минимальную ширину с 231dp
до 216dp
, как показано ниже:
//btnContainer --> GridLayout Object
//btn --> Button Object
//BTN_COLS --> Number of Buttons in one row
btn.setMinimumWidth(btnContainer.getWidth()/BTN_COLS);
3.Проверьте, правильно ли установлена минимальная ширина (Прокрутите вправо, параметр MinW в строке журнала):
D/CommandCenter: Btn <0> details:X<0.0>Y<802.0> || W<270>H<126> || PadL<31>PadR<31>PadT<25> || MarL<0>MarR<0>MarT<0> || L<0> || MinW<216>
D/CommandCenter: Btn <1> details:X<270.0>Y<802.0> || W<270>H<126> || PadL<31>PadR<31>PadT<25> || MarL<0>MarR<0>MarT<0> || L<270> || MinW<216>
D/CommandCenter: Btn <2> details:X<540.0>Y<802.0> || W<270>H<126> || PadL<31>PadR<31>PadT<25> || MarL<0>MarR<0>MarT<0> || L<540> || MinW<216>
D/CommandCenter: Btn <3> details:X<810.0>Y<802.0> || W<270>H<126> || PadL<31>PadR<31>PadT<25> || MarL<0>MarR<0>MarT<0> || L<810> || MinW<216>
К сожалению, минимальная ширина кнопки не была использована для разрешения (10) GirdLayout
Ограничения и по-прежнему показывает ту же ошибку, что и используемая ширина по-прежнему 231dp
вместо 216dp
D/android.widget.GridLayout: horizontal constraints: x1-x0>=231, x2-x1>=231, x3-x2>=231, x4-x3>=231, x5-x4>=231, x5-x0<=1080 are inconsistent; permanently removing: x5-x0<=1080.
.
4. Вот как обстоят дела после того, как все пошло не так:
D/CommandCenter: Btn <0> details:X<0.0>Y<802.0> || W<2391>H<126> || PadL<31>PadR<31>PadT<25> || MarL<0>MarR<0>MarT<0> || L<0> || MinW<216>
D/CommandCenter: Btn <1> details:X<2391.0>Y<802.0> || W<2391>H<126> || PadL<31>PadR<31>PadT<25> || MarL<0>MarR<0>MarT<0> || L<2391> || MinW<216>
D/CommandCenter: Btn <2> details:X<4782.0>Y<802.0> || W<2391>H<126> || PadL<31>PadR<31>PadT<25> || MarL<0>MarR<0>MarT<0> || L<4782> || MinW<216>
D/CommandCenter: Btn <3> details:X<7173.0>Y<802.0> || W<2391>H<126> || PadL<31>PadR<31>PadT<25> || MarL<0>MarR<0>MarT<0> || L<7173> || MinW<216>
D/CommandCenter: Btn <4> details:X<9564.0>Y<802.0> || W<2391>H<126> || PadL<31>PadR<31>PadT<25> || MarL<0>MarR<0>MarT<0> || L<9564> || MinW<216>