Android: как создать диалог с прокруткой заголовка? - PullRequest
2 голосов
/ 26 августа 2010

Хорошо, поэтому я прочитал объяснение настраиваемого диалога на веб-сайте And Dev http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog

В нем показано, как создать настраиваемый диалог, а не как настроить заголовок!

В основном мой заголовок слишком длинный, и я хочу, чтобы он прокручивался (например, текстовое представление) или, что еще лучше, имел эффект "выделения", я думаю, он называется.

Или, если я не могу сделать прокрутку, дайте ему большеместо для переноса на большее количество строк!

Любые идеи, я не надеюсь, так как их нет на android.dev: - (

Ответы [ 3 ]

7 голосов
/ 31 августа 2011

Вы можете сделать заголовок диалога многострочным:

TextView title = (TextView) dialog.findViewById(android.R.id.title);
title.setSingleLine(false);
6 голосов
/ 30 августа 2010

Заголовки окна 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>

Из-за некоторых ограничений, связанных с функцией выделения, текстовое представление должно быть сфокусировано, и оно будет прокручиваться только в фокусе (что изначально и должно быть).

0 голосов
/ 01 августа 2013

Я считаю наилучшей практикой сочетание ответа РусланаК (для получения TextView) и ответа Торстенвва (для создания прокручиваемого TextView).

...