回答
剛剛發現這篇文章,同時試圖找出如何做同樣的事情。以下是我爲未來發現這一點的其他人做過的事情。
風格的XML如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="PauseDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowTitleStyle">@style/PauseDialogTitle</item>
</style>
<style name="PauseDialogTitle" parent="@android:style/TextAppearance.DialogWindowTitle">
<item name="android:gravity">center_horizontal</item>
</style>
<style name="DialogWindowTitle">
<item name="android:maxLines">1</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:textAppearance">@android:style/TextAppearance.DialogWindowTitle</item>
</style>
</resources>
在我的活動onCreateDialog因爲我想要的對話框方法風格創建對話框是這樣的:
Dialog pauseDialog = new Dialog(this, R.style.PauseDialog);
pauseDialog.setTitle(R.string.pause_menu_label);
pauseDialog.setContentView(R.layout.pause_menu);
你已經有了一些啓動提示這裏修改對話框的標題: Android - change custom title view at run time 不知道它是否可以居中(沒試過),但如果它是一個自定義視圖我想這是非常有可能的。
如果您沒有撥打AlertDialog.Builder.setIcon()
和AlertDialog.Builder.setTitle()
,那麼您的自定義對話框將不會顯示內置/默認標題View。在這種情況下,您可以添加自定義標題視圖:
AlertDialog.Builder.setView(View view)
只要它是你誰創建這個視圖中,可以實現任何類型的對齊。
這裏是一個討厭的解決方案...擴展AlertDialog.Builder並覆蓋所有的方法(例如,setText,setTitle,setView等),以便不設置實際的Dialog文本/標題/視圖,而是在Dialog的View中創建一個新的視圖。那麼你可以隨心所欲地設計任何樣式。
爲了闡明,就父級而言,設置了視圖,沒有別的。
就您的自定義擴展類而言,一切都在該視圖內完成。
的另一種方式,這可以通過編程使用setCustomTitle()來完成:
// Creating the AlertDialog with a custom xml layout (you can still use the default Android version)
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.viewname, null);
builder.setView(view);
TextView title = new TextView(this);
// You Can Customise your Title here
title.setText("Custom Centered Title");
title.setBackgroundColor(Color.DKGRAY);
title.setPadding(10, 10, 10, 10);
title.setGravity(Gravity.CENTER);
title.setTextColor(Color.WHITE);
title.setTextSize(20);
builder.setCustomTitle(title);
'R.layout.viewname'在此佈局中必須包含哪些內容?只有'TextView'? – DroidLearner 2012-12-22 03:28:20
整個視圖部分不需要包含,只有當您想要自定義AlertDialog的默認視圖時才需要包含整個視圖部分。我確信它必須是一個TextView。 – 2012-12-23 13:55:38
我得到這個textview的灰色邊框。我如何刪除它?我試過\t \t \t title.setBackgroundResource(R.drawable.black_border);但是這沒有幫助。 @LandLPartners – user1051505 2013-12-07 07:29:46
你可以做到這一點的代碼。假設你有對話框片段,然後添加下面的代碼行。
@Override
public void onStart()
{
super.onStart();
TextView textView = (TextView) this.getDialog().findViewById(android.R.id.title);
if(textView != null)
{
textView.setGravity(Gravity.CENTER);
}
}
爲您定製DialogFragment你可以這樣做:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Dialog dialog = super.onCreateDialog(savedInstanceState);
final TextView textView = (TextView) dialog.findViewById(android.R.id.title);
if(textView != null) {
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
}
return dialog;
}
這對我不起作用。 findViewById(android.R.id.title);返回null。 – Alyoshak 2016-11-28 22:31:47
TextView titleView = (TextView) dialog.findViewById(android.R.id.title);
if(titleView != null) {
titleView.setGravity(Gravity.CENTER);
}
詳情請參閱this KodeCenter article on Android Dialog and AlertDialog。(使用android.support.v7.app.AlertDialog
)
TextView titleText = (TextView) helpDialog.findViewById(R.id.alertTitle);
if(titleText != null) {
titleText.setGravity(Gravity.CENTER);
}
的完整代碼:
試試這個
AlertDialog.Builder helpDialogBuilder = new AlertDialog.Builder(context)
.setTitle(/*your title*/)
.setMessage(/*your message*/)
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/*you can do something here*/
dialog.dismiss();
}
})
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
/*you can do something here*/
dialog.dismiss();
}
});
final AlertDialog helpDialog = helpDialogBuilder.create();
helpDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
TextView titleText = (TextView) helpDialog.findViewById(R.id.alertTitle); if(titleText != null) { titleText.setGravity(Gravity.CENTER); }
TextView messageText = (TextView) helpDialog.findViewById(android.R.id.message);
if(messageText != null) {
messageText.setGravity(Gravity.CENTER);
}
}
});
helpDialog.show();
您可以通過編程做沒有自定義視圖:
@Override
public void onStart()
{
super.onStart();
TextView textViewVanilla = (TextView) this.getDialog().findViewById(android.R.id.title);
if(textViewVanilla != null)
{
textViewVanilla.setGravity(Gravity.CENTER);
}
// support for appcompat v7
TextView textViewAppcompat = (TextView) this.getDialog().findViewById(android.support.v7.appcompat.R.id.alertTitle);
if(textViewAppcompat != null)
{
textViewAppcompat.setGravity(Gravity.CENTER);
}
}
感謝@hesam爲理念。對於appcompat佈局,請參見Android/sdk/platforms/android-26/data/res/layout/alert_dialog_title_material.xml
- 1. Android對話框標題框我怎樣才能使它更小
- 2. 我怎樣才能讓自定義對話框angeled邊緣
- 3. 我怎樣才能讓我的提醒對話在Android的自定義提醒
- 4. 我怎樣才能讓AngularJS綁定一個fancybox對話框?
- 5. Android AlertDialog我怎樣才能識別出對話框的對象
- 6. 我怎樣才能使對話框動態定時器在android
- 7. 怎樣才能讓android中
- 8. 我怎樣才能讓網站鏈接在警告對話框
- 9. 我怎樣才能讓自定義導航欄透明的RNRF
- 10. 我怎樣才能讓它幹?
- 11. 如何在Android上自定義對話框標題的中心
- 12. Android的對話框自定義樣式
- 13. 我怎樣才能讓
- 14. 我怎樣才能讓這樣的
- 15. AdMob在自定義對話框中?怎麼樣? Android
- 16. 我怎樣才能在Android 4.0的上
- 17. 自定義警報對話框不在Android上垂直居中
- 18. WPF - 我怎樣才能使一個自定義邊框
- 19. 我怎樣才能讓我的自定義指令的NG-重複
- 20. 我怎樣才能讓ReSharper的讓我標籤其他
- 21. 我怎樣才能爲styleBar的UINavigationBar創建自定義樣式?
- 22. 我怎樣才能把日期和時間選擇在對話框中的Android
- 23. 我怎樣才能在ngDialog中設置對話框寬度
- 24. Mongoid:我怎樣才能讓Mongoid識別我的自定義ActiveModel驗證?
- 25. 我怎樣才能讓我的.apk簽名在android中發佈
- 26. 我該怎麼做才能讓它自動打電話?
- 27. 我怎樣才能在標題高圖
- 28. 我怎樣才能使用我的自定義下拉多次
- 29. 我怎樣才能讓我的chatbot談話第一?
- 30. Magento菜單:我怎樣才能讓它左對齊?
我試過了你的建議,但它沒有將對話框的標題居中(HTC Wildfire與Android 2.2.1一起運行)......任何想法?因爲直觀上你的解決方案很有意義:) – Ready4Android 2011-08-28 23:47:42
對不起,不知道。我已經在我的Ideos和1.6和2.2的模擬器上測試過了,沒有任何問題。 – ChrisJD 2011-10-16 00:28:08
沒有「parent =」@ android:style/DialogWindowTitle「」。 – Hesam 2011-11-30 10:35:31