Android中的样式对话框

时间:2015-01-06 10:28:41

标签: android android-alertdialog styling

我一直在尝试使用片段设置基本(不是所有自定义)对话框,并且遇到困难。正如您在附图中看到的那样,背景阴影不正确,标题在左侧和右侧都是白色。

Fragment as a dialog

根据How to style AlertDialogs like a pro的建议,我尝试通过我的应用设置警报对话框样式,并将样式复制到Android SDK中,但这似乎没有太大区别。

<!-- Local copy of android:Theme.Holo.Dialog.Alert -->
<style name="Theme_Holo_Dialog_Alert" parent="@android:style/Theme.Holo.Light.Dialog">
    <item name="android:windowBackground">@drawable/dialog_full_holo_light</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowActionModeOverlay">true</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:buttonBarStyle">@android:style/Holo.Light.ButtonBar.AlertDialog</item>
    <item name="android:borderlessButtonStyle">@android:style/Widget.Holo.Light.Button.Borderless.Small</item>
    <item name="listPreferredItemPaddingLeft">16dip</item>
    <item name="listPreferredItemPaddingRight">16dip</item>
    <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
    <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
</style>

<!-- Local copy of android:DialogWindowTitle.Holo -->
<style name="DialogWindowTitle_Holo">
    <item name="android:maxLines">1</item>
    <item name="android:scrollHorizontally">true</item>
    <item name="android:textAppearance">@android:style/TextAppearance.Holo.DialogWindowTitle</item>
</style>

我尝试使用

直接设置样式
ContextThemeWrapper ctw = new ContextThemeWrapper(getActivity(), R.style.Theme_Holo_Dialog_Alert);
AlertDialog.Builder builder = new AlertDialog.Builder(ctw);

以及

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), AlertDialog.THEME_HOLO_LIGHT);

这些都不会对背景阴影或标题样式产生影响。

有什么想法吗?

更新1:使用片段设置对话框的布局,并将其添加到构建器中作为视图:

LayoutInflater inflater = getActivity().getLayoutInflater();
_layoutView = inflater.inflate(R.layout.fragment_edit_cycles, null);
builder.setView(_layoutView);

使用布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="10dp" 
    android:paddingBottom="20dp"
    android:gravity="center_horizontal"
    android:orientation="horizontal" >

    <NumberPicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editStageCyclesSpin" />

</LinearLayout>

更新2:删除了填充并更改了高度/宽度以响应Alok Nair

我删除了填充并更改了布局的宽度和高度,但不幸的是,这对标题中的空白区域没有影响

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <NumberPicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editStageCyclesSpin" />

</LinearLayout>

0 个答案:

没有答案