Android: установить заголовок в середине - PullRequest
2 голосов
/ 20 мая 2011

Я создаю пользовательский заголовок, используя стиль. Я использую код из http://labs.makemachine.net/2010/03/custom-android-window-title/

Я также установил значок в строке заголовка, используя setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,R.drawable.title_logo);. Можно ли установить строку заголовка посередине? если возможно, тогда я хочу установить с помощью пользовательского стиля.

РЕДАКТИРОВАТЬ: у меня есть контрольный код http://andmobidev.blogspot.com/2010/01/centering-title-of-window.html, он работает нормально, когда в строке заголовка нет значка, но при установке значка я получаю ошибку java.lang.ClassCastException: android.widget.RelativeLayout Я понятия не имею, как окно рисует строку заголовка, я проверил один из блогов http://android -developers.blogspot.com / 2009/03 / window-background-ui-speed.html

Спасибо.

Ответы [ 3 ]

5 голосов
/ 06 июня 2011

Я могу найти реальный ответ, наконец, я загружаю новый макет для центра строки заголовка установить заголовок штрих-кода в Oncreate

 final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

        setContentView(R.layout.main);
        if (customTitleSupported) {
            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
                    R.layout.title_bar);
        }
        final TextView myTitleText = (TextView) findViewById(R.id.title_bar);
        if (myTitleText != null) {
            myTitleText.setText(R.string.title_ble_melem);

        }

вот макет

<?xml version="1.0" encoding="utf-8" ?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linear" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    >
    <TextView
        android:id="@+id/title_bar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="title bar"
        android:layout_centerInParent="true"
        android:layout_marginLeft="5dip"
        android:textStyle="bold"
        android:textColor="#ffffff"
        android:textSize="20sp"
       />

     <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/title_bar"
        android:src="@drawable/ic_top_bar"

    />
    </RelativeLayout >

Большое спасибо за ответ.

2 голосов
/ 20 мая 2011

просто поместите код в setContentView (R.layout.new) ...

((TextView)((FrameLayout)((LinearLayout)((ViewGroup) getWindow().getDecorView()).getChildAt(0)).getChildAt(0)).getChildAt(0)).setGravity(Gravity.CENTER);

Чтобы быть очень откровенным, этот код скопирован из другого вопроса stackoverflow: Как выровнять центрназвание или метка в деятельности?

Я уверен, что это может помочь вам, друг !!!!

;)

2 голосов
/ 20 мая 2011

Эта страница может вам помочь?

Это:

<TextView android:id="@android:id/title" 
   style="?android:attr/windowTitleStyle"
   android:background="@null"
   android:fadingEdge="horizontal"
   android:gravity="center_vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent" />

И:

ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
LinearLayout root = (LinearLayout) decorView.getChildAt(0);
FrameLayout titleContainer = (FrameLayout) root.getChildAt(0);
TextView title = (TextView) titleContainer.getChildAt(0);
title.setGravity(Gravity.CENTER);

Этодолжен вызываться в Activity.onCreate(...) после настройки просмотра содержимого. Из источника .

...