Android Custom Titlebar работает с некоторыми проблемами - PullRequest
0 голосов
/ 02 ноября 2011

Я создаю пользовательскую заголовок, используя следующий XML-файл:

<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/myTitle"
 android:text="custom title bar"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:background="@drawable/background" />

И в onCreate () моей деятельности у меня есть следующий код:

public class CustomTitleBar extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
            setContentView(R.layout.main);
            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle);
    }
}

Строка заголовка появляется без проблем. Изображение, которое я устанавливаю в качестве фона (имя изображения также является фоновым, как вы можете видеть выше в xml), также появляется. Но проблема находится как справа, так и слева. В изображении остается небольшой разрыв, т.е. изображение не покрывает всю ширину родительского элемента, хотя для layout_width было задано значение "fill_parent".

Любой, кто-нибудь idea.plz помочь.

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Небольшой пробел влево / вправо добавляется платформой, поскольку по умолчанию windowTitleBackgroundStyle в стандартной теме используется 9-патч для рисования с этим заполнением . Вот пример того, как это переопределить:

В AndroidManifest.xml добавьте android:theme для своей активности:

<activity
    android:theme="@style/MyCustomTitlebar"
    android:label="Custom Titlebar"
    android:name=".CustomTitlebar" />

Затем определите пользовательскую тему где-нибудь в ваших ресурсах (например, в res / values ​​/ themes.xml):

<?xml version="1.0" encoding="UTF-8"?>
<resources
    xmlns:android="http://schemas.android.com/apk/res/android">
    <style
        name="MyCustomTitlebar"
        parent="@android:style/Theme">
        <item
            name="android:windowTitleBackgroundStyle">@style/MyBackground</item>
    </style>
    <style
        name="MyBackground">
        <item
            name="android:background">@drawable/background</item>
    </style>
</resources>

Поскольку мы перемещаем фон в стиль, мы можем изменить макет mytitle.xml следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myTitle"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="custom title bar" />

Возможно, вам потребуется настроить фон (так как он имеет отступы, если это 9-патч) или просто установить отступ в макете mytitle.xml (используя paddingLeft / Right / Top / Bottom).

0 голосов
/ 02 ноября 2011

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

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