Я обычно делаю так
<!--Обязательно в корневом Layout делаем wrap_content по width и height-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="vertical"
android:layout_gravity="center">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="64dp"
android:background="@color/cp_yellow">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title"
android:textColor="@android:color/white"
android:textSize="22sp" />
</RelativeLayout>
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center">
<ProgressBar
android:id="@android:id/progress"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center" />
<com.RichEditText.colorpicker.ColorPickerPalette
android:id="@id/color_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:visibility="gone" />
</FrameLayout>
</ScrollView>
</LinearLayout>
</FrameLayout>
в
FragmentDialog переопределяю
onCreateView@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = LayoutInflater.from(getActivity()).inflate(R.layout.color_picker_dialog, null); // Находим наш Layout
this.mProgress = ((ProgressBar) view.findViewById(android.R.id.progress));
this.mPalette = ((ColorPickerPalette) view.findViewById(R.id.color_picker));
this.mPalette.init(this.mSize, this.mColumns, this);
if (this.mColors != null)
showPaletteView();
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); //Прячем стандартный Title
return view;
}
Одна проблема, что необходимо самому перерисовывать кнопки подтверждения и отмены, но этот код шаблонный можно взять в исходниках.
По другому кастомизировать AlertDialog не получилось.