滚动活动标题

时间:2012-11-12 09:46:28

标签: android android-activity title

我动态地在Activity中加载标题;每当标题太长时,我希望它滚动,以便可以阅读整个标题。

我尝试过自定义XML文件和requestFeature,

android:singleLine="true" 
android:ellipsize="marquee"
android:marqueeRepeatLimit ="marquee_forever"
android:scrollHorizontally="true"
android:focusable="true"
android:focusableInTouchMode="true" 

我试过的另一种方法

TextView textView = (TextView) findViewById(android.R.id.title);
textView.setSelected(true); 
textView.setEllipsize(TruncateAt.MARQUEE);
textView.setMarqueeRepeatLimit(1);

textView.setFocusable(true);
textView.setFocusableInTouchMode(true);
textView.requestFocus();
textView.setSingleLine(true);

在ellipsize()给了我nullpointers。我真的很茫然。我怎样才能达到这个效果?

1 个答案:

答案 0 :(得分:1)

您的第二种方法不起作用,因为(TextView) findViewById(android.R.id.title)返回null。

我建议关注Bhuro的answer,特别是如何自定义标题栏。从本质上讲,您需要一个自定义titlebar.xml,它在您的自定义标题栏中定义您想要的内容(在您的情况下,只是一个TextView)。 titlebar.xml示例:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/myTitle" 
        android:text="This is my new title and it is very very long"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:singleLine="true" 
        android:ellipsize="marquee"
        android:marqueeRepeatLimit ="marquee_forever"
        android:scrollHorizontally="true"
        android:focusable="true"
        android:focusableInTouchMode="true" 
    />
</LinearLayout>

然后在您的活动中指定它:

final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

if (customTitleSupported) {
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
}