Android: как сделать так, чтобы дочерний вид перекрывал родительский? - PullRequest
9 голосов
/ 21 марта 2011

Мне нужно реализовать макет, как на картинке. Родитель и Брат находятся в вертикальной LinearLayout. Поэтому мне нужно создать дочерний вид, чтобы перекрывать его родительский. Могу ли я сделать это в Android?

layout

Ответы [ 5 ]

7 голосов
/ 21 марта 2011

Если:

  1. брат является братом родитель
  2. родитель является ViewGroup
  3. и вы действительно хотите, чтобы child был потомком parent

, тогда, возможно, вы могли бы рассмотреть возможность использования android: clipChildren установлено в false на parent .

2 голосов
/ 14 октября 2014

Просто поместите их все в RelativeLayout и помните, что порядок рисования сверху вниз, поэтому поместите самый верхний вид внизу определения XML.

2 голосов
/ 21 марта 2011

На самом деле я просто смотрел на пример FrameLayout, у которого TextView накладывался поверх ImageView. Таким образом, очевидно, есть несколько способов сделать это. Ваш следующий вопрос может быть, какой из них лучше ... к этому я понятия не имею, но вот парень, который может:

http://www.curious -creature.org / 2009/03/01 / андроид-макет-триков-3-оптимизируют-часть-1 /

1 голос
/ 21 марта 2011

Если вы используете RelativeLayout, у вас не должно возникнуть проблем с достижением этого эффекта.По умолчанию он будет складывать все свои дочерние элементы друг над другом в верхнем левом углу, если вы не предоставите им параметры android: layout.Так что это определенно поддержит перекрывающихся детейВам просто нужно выяснить, как лучше всего сказать, куда ребенок должен попасть на экран относительно чего-то другого.

0 голосов
/ 21 марта 2011

Есть как минимум две схемы, которые могут это сделать.AbsoluteLayout и RelativeLayout.Я предлагаю вам поместить ваши представления в RelativeLayout и добавить их с помощью LayoutParams, которые определяют их смещение сверху и слева от родительского элемента:

RelativeLayout.LayoutParams rlp;
label = new TextView(ctx);
label.setBackgroundColor(0x00000000);
label.setTextColor(0xFF7ea6cf);
label.setTextSize(13);
label.setGravity(Gravity.LEFT);
label.setText("Examples:\n- Fentanyl\n- Dilaudid 2 mg PO q 4 hours prn moderate pain");
rlp = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,100);
rlp.topMargin=189;
rlp.leftMargin=30;
rlp.rightMargin=30;
rlParent.addView(label,rlp);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...