Android: установить строку заголовка в середине
Я создаю пользовательский заголовок, используя стиль. Я код из http://labs.makemachine.net/2010/03/custom-android-window-title/
Я также установил значок в строке заголовка, используя setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,R.drawable.title_logo);
возможно ли установить строку заголовка в середине? если возможно, тогда я хочу установить с использованием пользовательского стиля.
EDIT: у меня есть контрольный код 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-backgrounds-ui-speed.html
Спасибо.
Ответы
Ответ 1
Я могу найти реальный ответ, наконец, я загружаю новый макет для центра заголовка установить штрих-код заголовка в 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
Эта страница может вам помочь?
Это:
<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(...)
после настройки содержимого. Из источника.
Ответ 3
просто поместите код под setContentView (R.layout.new)...
((TextView)((FrameLayout)((LinearLayout)((ViewGroup) getWindow().getDecorView()).getChildAt(0)).getChildAt(0)).getChildAt(0)).setGravity(Gravity.CENTER);
Чтобы быть очень откровенным, этот код копируется из другого вопроса stackoverflow: Как выровнять центр заголовка или метки в действии?
Я уверен, что это может помочь вам спать!!!!
;)