2

我使用样式创建自定义标题。我从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-backgrounds-ui-speed.html之一

谢谢你。

4

3 回答 3

5

我可以找到真正的答案,最后我在 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 >

非常感谢您的回复。

于 2011-06-06T06:22:56.240 回答
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(...)在设置内容视图之后调用。从源

于 2011-05-20T06:26:34.503 回答
2

只需将代码放在 setContentView(R.layout.new) 下...

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

坦率地说,这段代码是从另一个stackoverflow问题复制而来的:如何在活动中对齐标题或标签的中心?

我相信它可以帮助你交配!!!!

;)

于 2011-05-20T06:29:16.193 回答