У меня много макетов, которые имеют разные корни ViewGroup (LinearLayouts, RelativeLayouts и т.д.). Эти представления все работают так, как я ожидаю, но теперь я пытаюсь добавить верхнюю панель навигации. Проблема в том, что корни могут иметь разные paddings, и если я просто включу свой макет в каждый из этих макетов, панель навигации ограничена по ширине родительским дополнением. Я бы хотел, чтобы эта панель навигации игнорировала корневую левую/правую/верхнюю прописку и полностью полную ширину на самой верхней части макета. Есть ли что-то, что я могу сделать в макете панели навигации, чтобы достичь этого, или я обречен на изменение всех существующих макетов, чтобы это учесть?
Android child view игнорировать родительское дополнение
Ответ 1
На самом деле, оказывается, вы можете изменить строку заголовка по умолчанию: http://www.helloandroid.com/tutorials/how-create-custom-titlebar.
http://www.anddev.org/my_own_titlebar_backbutton_like_on_the_iphone-t4591.html также оказалось полезным. В любом случае, спасибо!
Ответ 2
Пока это кажется очень плохой идеей, вы можете выполнить то, что вы ищете, установив атрибут clipToPadding родительской ViewGroup в значение false, а затем установите отрицательные поля в дочернем представлении.
Пример:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="#EEE"
android:clipToPadding="false">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello"
android:background="#333"
android:layout_marginLeft="-10dp"
android:layout_marginRight="-10dp"
android:layout_marginTop="-10dp"/>
</LinearLayout>
Приведенный выше пример работает, но я бы предположил, что вы должны просто поместить свою верхнюю панель навигации за пределы этой ViewGroup, в которой содержатся прокладки, которые вы пытаетесь избежать.
Ответ 3
Зачем вам нужно менять все ваши макеты? Если это только ваша панель навигации, которая должна игнорировать отступы, вы можете просто вывести на панель навигации из нее текущий родительский макет, а затем поместить оба макета внутри другого макета, который не имеет прокладки.