1、读取数据库中的中文时出现乱码问题
2、完全自定义的dialog
3、在xml文件中定义时间格式
1:数据库中文乱码
只要在Cursor读取时,用二进制的形式(getBolb())读出来再转码就可以了
String s = cursro.getBolb(1); String content = new String(s, "gb2312");
package org.ila.car.filemanager; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; /** * 有确定有取消按钮的信息提示对话框 * @author wusj * */ public class MsgDialog extends Dialog implements android.view.View.OnClickListener{ private int titleID; private int msgID; private Context context; private OnOkClickListener click; private String msg; public void setOnOkClickListener(OnOkClickListener c) { this.click = c; } public interface OnOkClickListener{ public void onClick(MsgDialog d); } public MsgDialog(Context context, int theme, int titleID, int msgID) { super(context, theme); this.context = context; this.titleID = titleID; this.msgID = msgID; } public MsgDialog(Context context, int style, int titleID, String msg){ super(context, style); this.context = context; this.titleID = titleID; this.msg = msg; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View view = LayoutInflater.from(context).inflate(R.layout.msg_dialog_layout, null); setContentView(view); TextView tvTitle = (TextView) view.findViewById(R.id.tv_title); TextView tvMsg = (TextView) view.findViewById(R.id.tv_msg); tvTitle.setText(context.getResources().getString(titleID)); if (msg == null){ tvMsg.setText(context.getResources().getString(msgID)); } else { tvMsg.setText(msg); } TextView tvOk = (TextView) view.findViewById(R.id.tv_ok); tvOk.setOnClickListener(this); TextView tvCancel = (TextView) view.findViewById(R.id.tv_cancel); tvCancel.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { MsgDialog.this.dismiss(); } }); } public void onClick(View v) { if (click != null) { click.onClick(this); } } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="348dip" android:layout_height="193dip" android:background="@drawable/fm_dialog_bg" android:gravity="center" android:orientation="vertical" android:padding="6dip" > <TextView android:layout_marginTop="2dip" android:layout_marginLeft="2dip" android:textColor="#ffffff" android:textSize="22sp" android:id="@+id/tv_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/fm_dialog_top_bg" /> <TextView android:layout_margin="10dip" android:layout_weight="1" android:id="@+id/tv_msg" android:layout_width="fill_parent" android:layout_height="0dip" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="1dip" android:orientation="horizontal" > <TextView android:id="@+id/tv_ok" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/fm_dialog_btn_ok_bg" android:gravity="center" android:text="确定" /> <TextView android:id="@+id/tv_cancel" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/fm_dialog_btn_cancel_bg" android:gravity="center" android:text="取消" /> </LinearLayout> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="dialog" parent="@android:style/Theme.Dialog"> <!-- name是我们在使用时要用到的资源的标志,parent是指当前的样式所继承的父类样式 --> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <!-- 隐藏标题栏 --> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:backgroundDimAmount">0.6</item> </style> </resources>
3:在xml文件中定义时间格式,并在程序中引用
Values.xml中 <string name="min_available" msgid="5493947690062988925">"还剩 <xliff:g id="MINUTES">%d</xliff:g> 分钟"</string> 程序中引用: timeStr = String.format(res.getString(R.string.min_available), t/60 + 1);