我剛搬到全部我的android.app.AlertDialog
到android.support.v7.app.AlertDialog
。
使用4.X模擬器進行了一些測試後,我發現對於簡單的對話框,只需更改導入即可。但是對於多選對話框,另外,您需要執行AppCompatDialog alert = builder.create();
以獲取Material Design樣式對話框(在4.X上)。
需要明確的是,如果你有一個簡單的對話框像這樣的:
import android.support.v7.app.AlertDialog;
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setIcon(resId)
.setTitle(title)
.setMessage(msg)
.setCancelable(isCalncelable)
.setPositiveButton(btn1, listener1);
AlertDialog alert = builder.create();
alert.show();
改變進口就足夠了:)
但對於多選擇對話框,則需要使用AppCompatDialog
像這樣:
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatDialog;
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Choose something")
.setPositiveButton(...)
.setMultiChoiceItems(mStringArray, mSelectedArray, SomeFragment.this);
AppCompatDialog alert = builder.create();
alert.show();
然後你在4.X設備上看到很好的Material Design外觀。
現在有趣的部分!
對於多選擇對話框,一個5.X設備上,本地版本(android.app.AlertDialog
)示出了相應的複選框在左,正確跟隨Material Design spec。但是如果您使用支持對話框,那麼複選框將出現在右側。 WTF!
從長遠來看,隨着Android 5+獲得市場份額,您將需要切換回本機對話框。
當使用'builder.setView(v)'作爲'appcompatdialog'時,對話框的大小是max,而不是僅包裝組件。這裏'v'是一個'recyclerview',它有變量no。項目 –
我應該怎麼做,以便對話框的大小根據編號改變。 'recyclerview'項目? –