通过使用 2 个 NumberPicker 创建一个对话框需要帮助

Posted

技术标签:

【中文标题】通过使用 2 个 NumberPicker 创建一个对话框需要帮助【英文标题】:Need help by creating a dialog with 2 NumberPickers 【发布时间】:2012-12-02 16:36:54 【问题描述】:

我正在尝试创建一个包含 2 个 NumberPicker 的对话框。我希望它们是默认的 Holo 主题样式。我找不到任何好的例子。到目前为止,我得到了:

    LayoutInflater inflater = (LayoutInflater)
        getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View npView = inflater.inflate(R.layout.number_picker_dialog, null);
        NumberPicker minPicker = (NumberPicker) npView.findViewById(R.id.min_picker);
        minPicker.setMaxValue(100);
        minPicker.setMinValue(0);
        NumberPicker maxPicker = (NumberPicker) npView.findViewById(R.id.max_picker);
        maxPicker.setMaxValue(100);
        maxPicker.setMinValue(0);

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Text Size:");
        builder.setView(npView);
        builder.setPositiveButton("Okay",
            new DialogInterface.OnClickListener() 
                public void onClick(DialogInterface dialog, int whichButton) 

                
            );
       builder.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() 
                    public void onClick(DialogInterface dialog, int whichButton) 
                    
                );
       dialog = builder.create();
       dialog.show();

number_picker_dialog xml:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:holo="http://schemas.android.com/apk/res-auto"
 android:layout_
 android:layout_
 android:orientation="horizontal" 
 android:gravity="center">

<NumberPicker 
    android:id="@+id/min_picker"
    android:
    android:layout_
    android:layout_
    android:/>

<NumberPicker 
    android:id="@+id/max_picker"
    android:
    android:layout_
    android:layout_/>

</LinearLayout>

但是颜色选择器文本是白色的(像背景一样),我无法设置 NumberPicker 的 textColor。

我如何设置 textColor 或者有人知道一个好的 NumberPicker 示例吗?

【问题讨论】:

对 NumberPicker 应用一个样式,该样式的 textViewStyle 设置为您想要的文本颜色。 【参考方案1】:

我发现我的 NumberPicker 不是 Holo.Light 样式的问题:

而不是调用:

   LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   View npView = inflater.inflate(R.layout.number_picker_dialog, null);

我通过调用解决了它:

 View npView = getLayoutInflater().inflate(R.layout.number_picker_dialog, null);

【讨论】:

不确定为什么此更改对您有用。 beforeafter 语句是等效的。你可以测试它 - getLayoutInflater() == (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ==> true【参考方案2】:

我的方法是创建一个自定义对话框类,如下所示。

public class CustomDialog extends Dialog 
     public CustomDialog(Context context) 
        super(context, R.style.customDialog); //use your style id from styles.xml
     

     public void setNumberDialog() 
          setContentView(R.layout.number_picker_dialog);
          //add required listeners
          show();
     

通过调用活动来调用对话框。

 new CustomDialog(context).setNumberDialog(); 

并且样式参数在styles.xml中定义

<style name="customDialog" parent="android:Theme.Dialog">
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="android:background">@android:color/transparent</item>
    <item name="android:textColor">@color/textColorWhite</item>
</style>

【讨论】:

谢谢你的帮助,但我发现了真正的问题【参考方案3】:

试试:

<NumberPicker
    style="@android:style/TextAppearance">
</NumberPicker>

【讨论】:

以上是关于通过使用 2 个 NumberPicker 创建一个对话框需要帮助的主要内容,如果未能解决你的问题,请参考以下文章

java如何创建一颗二叉树

用 GitBook 创建一本书

用 GitBook 创建一本书

如何使用 SQLAlchemy 只创建一张表?

通过迭代另一列来创建一列

C#如何创建一张access 表格