2016-09-29 3 views
0

я застрял с margin и padding вопросу о названии AlertDialog.Builder, что я делаю, я хочу титул в center так я использую setCustomTitle я могу сделать это, но застрял с запасом и заполнения его. Я не хочу, чтобы появилось нежелательное дополнение, а также я хочу установить верхний край заголовка, я использую LinearLayout.LayoutParams, но он не имеет никакого эффекта. пожалуйста, предложить то, что нужно сделать, чтобы справиться с it.thanksКак установить верхний край пользовательского заголовка AlertDialog и удалить нежелательные прокладки?

Код:

dialog = new AlertDialog.Builder(context, R.style.DialogTheme); 
    TextView title = new TextView(context); 
    title.setTextColor(ContextCompat.getColor(context, R.color.black)); 
    title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20); 
    title.setTypeface(Typeface.DEFAULT_BOLD); 
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    lp.setMargins(0, 20, 0, 0); 
    title.setLayoutParams(lp); 
    title.setText("Dialog"); 
    title.setGravity(Gravity.CENTER); 
    dialog.setCustomTitle(title); 
    dialog.setMessage("Dialog box with custom title view "); 
    dialog.setCancelable(false); 
    dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

     } 
    }); 
    dialog.show(); 

Результат: enter image description here

+0

Выглядит хорошо! Я не вижу никаких проблем в padding. Можно ** центрировать ** текст, если вы хотите в 'dialog'' setContentView() 'используя концепцию гравитации! –

+0

@utkarshdubey Я не хочу много дополнений между заголовком диалога и диалоговым сообщением, которое приходит по умолчанию по умолчанию –

ответ

1
AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
     TextView title = new TextView(this); 
     title.setTextColor(ContextCompat.getColor(this, android.R.color.black)); 
     title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20); 
     title.setTypeface(Typeface.DEFAULT_BOLD); 
     LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     lp.setMargins(0, 20, 0, 0); 
     title.setPadding(0,30,0,0); 
     title.setLayoutParams(lp); 
     title.setText("Dialog"); 
     title.setGravity(Gravity.CENTER); 
     dialog.setCustomTitle(title); 
     dialog.setMessage("Dialog box with custom title view "); 
     dialog.setCancelable(false); 
     dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 

      } 
     }); 
     dialog.show(); 

Заменить этот код будет работать

+0

благодаря работе 'setPadding', но как удалить прописку между заголовком диалога и сообщением любую идею? –

+0

@KapilRajput пытается установить пользовательский диалог вместо Alert Dialog, он даст больше настроек –

0

Вы можете избежать создания все это методов для вашего AlertDialog с помощью DialogFragment. Просто используйте getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); в методе onCreateView и создайте собственное диалоговое окно, в котором вы создаете общий фрагмент. Это лучший способ сделать правильные диалоги.

0

Я предлагаю вам использовать DialogFragment, чтобы показать пользовательский макет как оповещения о диалоге его очень легко, и мы можем настроить диалог наш согласно requirement..for более подробно об этом: https://developer.android.com/reference/android/app/DialogFragment.html

Ниже раскладка согласно вашему требованию , Вы можете использовать приведенный ниже макет xml, чтобы показать свой собственный макет.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="10dp"> 

    <LinearLayout 
     android:id="@+id/header" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     android:orientation="horizontal"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="@dimen/margin10dp" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="My Dialog" 
      android:textColor="@color/white" 
      android:textSize="22dp" 
      android:textStyle="bold" /> 

    </LinearLayout> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/header" 
     android:padding="10dp"> 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:text="My Dialog Box Description !" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textSize="20dp" /> 

     <Button 
      android:id="@+id/btnSubmit" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentEnd="true" 
      android:layout_alignParentRight="true" 
      android:layout_below="@+id/textView2" 
      android:background="@android:color/transparent" 
      android:text="OK" 
      android:textSize="22dp" /> 

    </RelativeLayout> 
</RelativeLayout> 
Смежные вопросы