2015-02-11 5 views
1

Я пишу специальный диалог на Android. Я сделал это, используя метод onCreateView.Как настроить название настраиваемого диалогового окна на Android

public class CheckpointLongPressDialog extends DialogFragment { 

public void CheckpointLongPressDialog() {} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_checkpoint_long_press_dialog, container); 
    getDialog().setTitle("TITLE"); 
    return view; 
}  

Как я могу централизовать название программным путем?

+0

Зачем подчеркивать себя, делая это ** программно **, когда вы можете просто изменить файл 'fragment_checkpoint_long_press_dialog' xml? –

+0

Возможный дубликат http://stackoverflow.com/questions/12387345/how-to-center-align-the-actionbar-title-in-android –

+0

@DerGolem, вы правы, но я думаю, что есть простой способ сделать это программно возможно –

ответ

3

Возможно, это не лучший способ, я использую пользовательское название TextView.

TextView title = new TextView(mainActivity); 
title.setText(alertTitle); 
title.setBackgroundResource(R.drawable.gradient); 
title.setPadding(10, 10, 10, 10); 
title.setGravity(Gravity.CENTER); // this is required to bring it to center. 
title.setTextSize(22); 
getDialog().setCustomTitle(title); 
+1

Я стараюсь, но не могу найти функцию 'setCustomTitle (title)' –

0

Попробуйте это ..

final int titleId = getActivity().getResources().getIdentifier("alertTitle", "id", "android"); 
TextView title = (TextView) getDialog().findViewById(titleId); 
if (title != null) { 
    title.setGravity(Gravity.CENTER); 
} 
0

Что делать, если вы используете весь макет раздувать также пользовательский заголовок ?. Вместо getDialog().setTitle("TITLE"); вы также можете включить TextView в свой собственный макет для названия.

1

Я решаю проблему, используя конструктор и раздувая XML-макет.

private AlertDialog.Builder builder; 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    // Use the Builder class for convenient dialog construction 
    builder = new AlertDialog.Builder(getActivity()); 

    LayoutInflater inflater = getActivity().getLayoutInflater(); 

    builder.setView(inflater.inflate(R.layout.fragment_checkpoint_long_press_dialog, null)); 


    // Create the AlertDialog object and return it 
    return builder.create(); 
} 
0

В названии заголовка используется тема по умолчанию. У вас есть 2 способа сделать то, что вы хотите, первый один лучше иметь более настроенный опыт:

  1. Используйте это, чтобы иметь диалог без названия, а затем сделать пользовательскую строку заголовка в макете этого фрагмента.

    dialog.getWindow(). RequestFeature (Window.FEATURE_NO_TITLE);

  2. Расширьте тему по умолчанию для диалога и обновите ее, а затем установите в этом диалоговом окне.

Смежные вопросы