Android:如何使用滚动标题创建对话框?

时间:2010-08-26 19:50:55

标签: android xml dialog title

好的,我已经阅读了And Dev网站上的自定义对话框说明 http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog

它显示了如何制作自定义对话框,而不是如何自定义标题!

基本上我的标题太长了,我希望它滚动(如textview)或者更好的还有一个'marquee'效果,我认为它被称为。

或者,如果我无法滚动,请给它更多的空间来包裹更多的线条!

任何想法,我都不抱太大希望,因为它不在android.dev上: - (

3 个答案:

答案 0 :(得分:7)

您可以将对话框标题设为多行:

TextView title = (TextView) dialog.findViewById(android.R.id.title);
title.setSingleLine(false);

答案 1 :(得分:6)

Customizig窗口(以及对话框)标题可以通过请求窗口特征CUSTOM_TITLE来完成,这必须在setContentView之前完成。

因此,在您的Dialog / Activity子类onCreate()中,请调用以下内容:

super.onCreate(savedInstance);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // <- insert this

然后,在你的setContentView 之后,执行以下操作:

setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title); // <- insert this

布局通常可以包含您想要的任何内容。 用于字幕文本控件。例如这样做:

布局/ custom_title.xml:

<FrameLayout android:id="@+id/FrameLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <TextView android:id="@+id/caption_text" 
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent" 
        android:text="This is a very very long text that will not fit into a caption regularly, so it will be displayed using marquee..." 
        android:lines="1"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:scrollHorizontally="true" 
        android:marqueeRepeatLimit="marquee_forever" 
        android:ellipsize="marquee"
        ></TextView>
</FrameLayout>

由于选取框功能的某些限制,文本视图必须是可聚焦的,并且只有在聚焦时才会滚动(最初应该是这样)。

答案 2 :(得分:0)

我认为RuslanK的组合(用于获取TextView)Thorstenvv(用于使TextView可滚动)的答案是最佳实践。