今天想實現一個工具類就是DialogUtil.方便你們創建各類dialog;android
public class DialogUtil {ide
public DialogUtil(String message,Context context) {函數
AlertDialog.Builder abBuilder = new AlertDialog.Builder(context);工具
abBuilder.setTitle("默認窗口");佈局
abBuilder.setMessage(message);測試
abBuilder.setCancelable(false);ui
abBuilder.setNegativeButton("取消", new OnClickListener() {spa
@Override設計
public void onClick(DialogInterface dialog, int which) {xml
// TODO Auto-generated method stub
}
});
abBuilder.setPositiveButton("肯定",new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
abBuilder.show();
}
public DialogUtil(String title,String message,Context context){
AlertDialog.Builder abBuilder = new AlertDialog.Builder(context);
abBuilder.setTitle(title);
abBuilder.setMessage(message);
abBuilder.setCancelable(false);
abBuilder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
abBuilder.setPositiveButton("肯定",new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
abBuilder.show();
}
}
這是默認的Alertdialog,我在寫這個工具類的時候想的是
1.怎麼把自定義diaolog寫進去!!還沒實現。看看別人的代碼,發現:AlertDialog.builder對象在show之後。咱們能夠爲它指定本身設計的layout,使用aBuilder.getWindow.setContentView(layout);實現。可是怎麼設置裏面button點擊事件呢,只要在寫 new OnclickListener的時候寫爲new View.OnclickListener就能夠正常使用了,爲啥呢
2.在寫構造函數的時候須要一個context對象可是我沒法得到當前activity的context,我發現此處想得到context對象只能是在構造函數中傳入參數,此處想了一會才懂。
3.下面說說progressbar
if(progressBar1.getVisibility() == View.INVISIBLE)
{progressBar1.setVisibility(View.VISIBLE);}
else {progressBar1.setVisibility(View.INVISIBLE);}
int progress = progressBar2.getProgress();
progress += 10;
if(progress < 100){
progressBar2.setProgress(progress);}
else{progressBar2.setVisibility(View.INVISIBLE);}
實現了點擊出現和消失功能,還有一個進度條是點擊十次會消失.須要注意的是設置顯示和不顯示都要用一樣的 View.INVISIBLE或者都用View.Gone
3. 最後說下layout包括linearlayout.,/relativeLayout/framLayout(使用fragment的時候常常使用),/tableLayout(設計相似表格局的時候使用)/.{今天在relativelayout中調用自定義標題欄的時候,老是出現問題不能控制標題欄最上邊,最後在外層加了一個linearlayout後頁面顯示正常了.}\
中LayoutInflater這個類仍是很是有用的,它的做用相似於findViewById()。不一樣點是LayoutInflater是用來找res/layout/下的xml佈局文件,而且實例化;而findViewById()是找xml佈局文件下的具體widget控件(如Button、TextView等)可是個人自定義控件使用此方法點擊無效,晚上測試啥問題,回頭再寫,下班了
如今我知道個人錯誤是什麼了,我把引用佈局和自定義控件的引用方法弄錯了,使用include只能來引用佈局不能爲其設置事件,可是想要引用自定義控件就要把你本身控件當成系統的那樣來引用,就好像LinearLayout,區別是你須要把包的名字也引入。就像
<com.example.titletest.TitleLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
</com.example.titletest.TitleLayout>
還有一個注意點就是在設置自定義佈局的時候,寬度必定要注意,一半是wrap_content,不要設置成matchparent。這樣會讓主頁面的控件被擋住,不能被看見。!!!