Как использовать центр представления в качестве контрольной точки внутри RelativeLayout

Я использовал небольшой хак, чтобы растянуть представление внутри родителя RelativeLayoutтак, чтобы оно начиналось сверху -слева и заканчивалось внизу -по центру. Хотя RelativeLayoutпозволяет вам расположить что-то в центре самого себя, тем не менее, кажется, что он не позволяет вам растянуть что-то до той же точки.

Мое решение было простым: поместите что-то в этот центр и задайте размер в 1 пиксель, чтобы он был фактическим центром родителя RelativeLayout. Не поймите меня неправильно, это работает, и у меня не было никаких проблем с этим, но если есть лучшая практика, я хотел бы знать об этом.

Что касается графического представления того, о чем я говорю, позвольте мне добавить несколько иллюстрирующих изображений.

enter image description here

Это первое изображение имеет текст -меньше TextView, расположенный в центре RelativeLayout, и я дал ему ширину 0dp. Это позволяет мне, как вы можете видеть на следующем изображении, размещать что угодно относительно этого центра. Я хочу сказать, что мне кажется странным, что вы не можете сделать это без необходимости добавления дополнительного вида в центре, потому что я могу видеть такие свойства, как Layout to left ofили Layout to right of, но нетLayout to center of.

enter image description here

Таким образом, сценарий может быть немного больше в строках «он еще не сломан , но я боюсь, что он лопнет в любую минуту ». С другой стороны, если это правильный способ сделать это, и я помогаю кому-то изучать что-то новое, это также работает для меня.

Почему я задаю вопросы, на которые нет ответов!? Я так устанавливаю награду здесь..

Самая разумная вещь, предложенная (на мой взгляд ), заключается в том, что я заменю свой LinearLayoutна View, который, как я полагаю, занимает немного меньше памяти, даже если это незначительно меньше. Так что я благодарю @yorkw за это. Я удивлен, что никто не спросил об этом раньше.

Просто чтобы уточнить, так как, кажется, есть недопонимание относительно того, что я на самом деле ищу. Я не хочу, чтобы что-то занимало половину родительской ширины/высоты. Я просил способ использовать его в качестве точки отсчета (, это то, что я сказал в заголовке ), чтобы я мог делать такие вещи, как позиционировать изображение слева от центра, не добавляя линейный макет, который занимает половину и гравитация слева или что-то еще.

Обновление

Начиная с API 14 у нас естьSpaceдоступный, который является облегченным Viewподклассом, который может быть более подходящим для такого рода взлома.

11
задан Onik 28 March 2019 в 22:27
поделиться