有些需求为了与软件风格保持一致需要自定义控件。progressdialog重写如下:
public class MofficeProgressDialog extends Dialog { LayoutInflater inflater; Context context; TextView titleText; static MofficeProgressDialog mofficeProgressDialog = null; TextView message; ImageView diverse; public MofficeProgressDialog(Context context) { super(context); this.context = context; } public static MofficeProgressDialog create(Context context) { mofficeProgressDialog = new MofficeProgressDialog(context, null); return mofficeProgressDialog; } public MofficeProgressDialog(Context context, AttributeSet attr) { super(context, R.style.CustomProgressDialog); this.context = context; setContentView(R.layout.mofficeprogressdialog); // inflater = (LayoutInflater)context.getSystemService(Service.LAYOUT_INFLATER_SERVICE); } public MofficeProgressDialog setTitle(String title) { titleText = (TextView)mofficeProgressDialog.findViewById(R.id.title); if (!StringUtils.isEmpty(title.toString())) { titleText.setVisibility(View.VISIBLE); titleText.setText(title.toString()); diverse = (ImageView)mofficeProgressDialog.findViewById(R.id.dirves); diverse.setVisibility(View.VISIBLE); } return mofficeProgressDialog; } public MofficeProgressDialog setTitleById(int titleId) { titleText = (TextView)mofficeProgressDialog.findViewById(R.id.title); String titleStr = context.getResources().getString(titleId); if (!StringUtils.isEmpty(titleStr)) { titleText.setVisibility(View.VISIBLE); titleText.setText(titleStr); diverse = (ImageView)inflater.inflate(R.layout.mofficeprogressdialog, null).findViewById(R.id.dirves); diverse.setVisibility(View.VISIBLE); } return mofficeProgressDialog; } public MofficeProgressDialog setMessageById(int messageId) { message = (TextView)mofficeProgressDialog.findViewById(R.id.message); String titleStr = context.getResources().getString(messageId); if (!StringUtils.isEmpty(titleStr)) { message.setText(titleStr); } return mofficeProgressDialog; } public MofficeProgressDialog setMessage(String messages) { message = (TextView)mofficeProgressDialog.findViewById(R.id.message); if (!StringUtils.isEmpty(messages.toString())) { message.setText(messages.toString()); } return mofficeProgressDialog; } }
mofficeprogressdialog.xml文件如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:background="@drawable/linearlayout_selector" android:layout_height="fill_parent"> <TextView android:id="@+id/title" android:layout_width="fill_parent" android:textSize="15sp" android:textColor="#000000" android:layout_marginLeft="5dp" android:visibility="gone" android:layout_height="wrap_content" /> <ImageView android:visibility="invisible" android:background="@drawable/dialog_diverse" android:layout_width="fill_parent" android:layout_height="1dp" android:id="@+id/dirves"></ImageView> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="5dp" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:orientation="horizontal"> <com.hanwei.demo.MofficeProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> </LinearLayout> <TextView android:id="@+id/message" android:layout_width="wrap_content" android:singleLine="true" android:layout_height="wrap_content" android:textSize="13sp" android:textColor="#000000" android:text="@string/hello" android:layout_gravity="center_vertical" /> </LinearLayout> </LinearLayout>
其中自定义的progressBar用之前提到的自定义控件。