0

以下代码适用于 ICS 而不是 2.3.3。

我使用带有 CheckBox 的自定义 Toast 并在 ICS 上触发 clickEvents。

我是否必须创建一个自定义对话框并将其称为活动,或者我可以解决它?

public void showToastwithImage(String text, int imageID, boolean forceShow) {

    if (prefs.getBoolean("prefs_showHelp", true)) {
        // create the view
        View view = inflateView(R.layout.message_panel);

        // set the image in the view
        ImageView im = (ImageView) view.findViewById(R.id.panel_icon);
        im.setImageResource(imageID);

        // set the text in the view
        TextView tv = (TextView) view.findViewById(R.id.message);
        tv.setText(text);

        CheckBox cb = (CheckBox) view.findViewById(R.id.checkBox1);

        if(forceShow){
            cb.setVisibility(View.GONE);
        }else{
            cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    SharedPreferences.Editor editor = prefs.edit();
                    editor.putBoolean("prefs_showHelp", false);
                    editor.commit();
                }
            });
        }


        // show the toast
        Toast toast = new Toast(this);
        toast.setView(view);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.show();
    }

}
private View inflateView(int resource) {
    LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    return vi.inflate(resource, null);
}
4

2 回答 2

1

custom dialog is better than toast...

您可以在自定义对话框中轻松设置视图......并且 toast 用于 Flash 消息而无需交互。

Dialog dialog = new Dialog(YourActivityName.this);
dialog.setContentView(R.layout.dialoglayout);

ImageView im = (ImageView) dialog.findViewById(R.id.panel_icon);
TextView tv = (TextView) dialog.findViewById(R.id.message);
CheckBox cb = (CheckBox) dialog.findViewById(R.id.checkBox1);

dialog.show();
于 2012-05-16T08:46:53.733 回答
1

Toast 应该用于在不提供任何用户交互的情况下显示短消息,因为它们在 2 或 3.5 秒的持续时间内可见。因此,我建议您使用 Dialog 或 Activity(带有对话框主题)让用户与您的 CheckBox 进行交互。

于 2012-05-16T08:47:21.570 回答