關於Android對話方塊寬度無法鋪滿全屏的問題

來源:互聯網
上載者:User

標籤:android   alertdialog   自訂對話方塊   

之前做自訂對話方塊需要寬度鋪滿全屏時,基本是這樣操作的.

AlertDialog dialog = new AlertDialog.Builder(context).create();        dialog.show();        Window window = dialog.getWindow();        WindowManager.LayoutParams lp = window.getAttributes();        lp.width = WindowManager.LayoutParams.MATCH_PARENT;        window.setAttributes(lp);        window.setWindowAnimations(R.style.dialogWindowAnim);//動畫        window.setContentView(R.layout.layout_mine_bank_del);//布局        window.setGravity(Gravity.CENTER);

以前一直沒出過問題,一直到這次使用了  

"AppTheme.NoActionBar"

主題,在5.0以上手機發現寬度無法鋪滿了;如果將位置設定底部

window.setGravity(Gravity.BOTTOM);

會出現底部也有一段距離.

很鬱悶,試了其他方式:

window.getDecorView().setPadding(0, 0, 0, 0);

或者

window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

或者

Window window = getWindow(); WindowManager.LayoutParams wlp = window.getAttributes();Display d = window.getWindowManager().getDefaultDisplay();//擷取螢幕寬wlp.width = (int) (d.getWidth());//寬度按螢幕大小的百分比設定 ;d.getWidth()這個方法已廢棄 wlp.gravity = Gravity.CENTER; window.setAttributes(wlp);

但是都一直無法成功.直到今天無意中在一個部落格看到這句才解決問題

window.setBackgroundDrawableResource(android.R.color.transparent);

把這句加上去就沒問題了,哈哈!

感謝博主 http://blog.csdn.net/bear_huangzhen/article/details/51683758


順便記一下,剛才那樣自訂對話方塊需要先 

dialog.show();

才行,不然會出錯的.另一種通過繼承去自訂的則是最後面才show

public class MyDialog extends AlertDialog{    public MyDialog(Context context) {       super(context);    }    @Override    protected void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);       this.setContentView(R.layout.my_dialog);    }}

這種使用也比較簡單,靈活度也好

final MyDialog myDialog = new MyDialog(context);myDialog.setMsg("測試顯示自訂對話方塊");myDialog.setOnPositiveListener("知道了",new View.OnClickListener() {    @Override    public void onClick(View v) {       myDialog.cancel();    }});myDialog.show();


本文出自 “蒼蠅學android” 部落格,請務必保留此出處http://qq445493481.blog.51cto.com/9545543/1790387

關於Android對話方塊寬度無法鋪滿全屏的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.