Android не может удалить отступы вокруг пользовательской строки заголовка - PullRequest
2 голосов
/ 02 июня 2011

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

Вот xml в моем файле strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello"></string>
    <string name="app_name"></string>
    <style name="LargeTitleTheme" parent="android:Theme.Light">
        <item name="android:windowTitleSize">44dip</item>
    </style>
</resources>

Вот код в моей деятельности (не обращайте внимания на отчаянное кодирование в этой точке)

ViewGroup decorView = (ViewGroup) this.getWindow().getDecorView();
    LinearLayout root = (LinearLayout) decorView.getChildAt(0);
    FrameLayout titleContainer = (FrameLayout) root.getChildAt(0);
    TextView title = (TextView) titleContainer.getChildAt(0);
    title.setGravity(Gravity.CENTER);
    Drawable drawable = getResources().getDrawable(R.drawable.nav);
    drawable.setBounds(0,0,0,0);
    title.setBackgroundDrawable(drawable);
    title.setPadding(0,0,0,0);
    title.setIncludeFontPadding(false);

Ответы [ 4 ]

3 голосов
/ 03 октября 2012

вы можете переопределить заполнение по умолчанию, применяя пользовательскую тему, например

<style name="customTheme" parent="android:Theme">
        <item name="android:windowTitleBackgroundStyle">@style/WindowTitleStyle</item>
</style>

 <style name="WindowTitleStyle">
    <item name="android:padding">0px</item>
</style>

Это удалит заполнение по умолчанию из пользовательской строки заголовка.

2 голосов
/ 30 июня 2011

Оказывается, мне пришлось изменить цвет фона самого контейнера заголовка:)

private void setNavigationAndTitle() {
        setTitle("Random Title");
        ViewGroup decorView = (ViewGroup) this.getWindow().getDecorView();
        LinearLayout root = (LinearLayout) decorView.getChildAt(0);
        FrameLayout titleContainer = (FrameLayout) root.getChildAt(0);
        titleContainer.setBackgroundColor(Color.BLUE);
        TextView title = (TextView) titleContainer.getChildAt(0);
        title.setTextSize(20);
        title.setGravity(Gravity.CENTER);
        title.setBackgroundColor(Color.BLUE);
}
0 голосов
/ 19 марта 2013

Начиная с 4.2 и ADT 21 при создании макета по умолчанию стандартные размеры добавляются в родительский контейнер:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

</RelativeLayout>

Значения расположены в res / измеренияs.xml:

<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>

</resources>

Либо удалите их из родительского объекта, либо измените значения измерения. Xml на нужные значения.

0 голосов
/ 02 июня 2011

вы можете попробовать сделать значения setPadding равными нулю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...