【问题标题】:AlertDialog custom title has black borderAlertDialog 自定义标题有黑色边框
【发布时间】:2012-04-19 05:37:38
【问题描述】:

我有一个AlertDialog,我使用自定义对话框视图。自定义标题视图的想法似乎很简单,但是自定义标题周围有一个我似乎无法摆脱的黑色边框。顶部、左侧和右侧各有一个单像素边框,而底部则有大约 5 个像素的边框。

在 Java 中创建对话框:

View titleView = inflater.inflate(R.layout.part_list_item, parent, false);
((TextView) titleView.findViewById(R.id.partName)).setText(titleText);
AlertDialog productDialog = new AlertDialog.Builder(getContext())
    .setCustomTitle(titleView)
    .setAdapter(adapter, doNothingClickListener)
    .create();

自定义标题视图布局,part_list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#ff0000"
    android:id="@+id/partName"
    android:layout_marginLeft="6dip"
    android:textAppearance="?android:attr/textAppearanceLargeInverse"
    />

我看到了什么:

我想看的:

有什么想法吗?

【问题讨论】:

  • 是否需要在相对布局中填充和在 textview 中添加阴影..?
  • @sandy 公平问题。我删除了那些位,结果是一样的,只是底部的黑色边框现在更大了。
  • 在扩展 XML 时尝试将 attachToRoot 设置为 true。
  • @Jacob 填充对我有用。谢谢:)

标签: android android-layout dialog android-alertdialog


【解决方案1】:

试试这个:

LayoutInflater inflater = (LayoutInflater)yourClass.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View titleView = inflater.inflate(R.layout.custom_dialog, null);

((TextView) titleView.findViewById(R.id.partName)).setText("Your Title");
alert1.setCustomTitle(titleView);

【讨论】:

    【解决方案2】:

    这是当您在警报上有标题时由 android 创建的结果。从我可以看到的屏幕截图中,警报的“正文”也是一个自定义视图,而不是警报消息属性。

    因此,获得所需结果的最简单方法是在警报的自定义视图中添加标题布局。

    示例:

    View titleView = inflater.inflate(R.layout.part_list_item, parent, false);
    
    View bodyView = ....
    bodyView.addview(titleView);
    ((TextView) itleView.findViewById(R.id.partName)).setText(titleText); 
    
    AlertDialog productDialog = new AlertDialog.Builder(getContext());
    productDialog.setView(bodyView);
    ...
    
    productDialog.create();
    

    bodyView.addview(titleView); 在警报正文中添加标题布局。

    productDialog.setView(bodyView); 将自定义视图设置为警报的正文。

    【讨论】:

    • 放弃AlertDialog 以支持自定义Dialog 有什么优势?对我来说,使用AlertDialog 的重点是已经有一个标题和一个正文,我可以简单地填写。
    • 我只是建议你可以在“body”视图上添加titleView。这将解决边界问题。因为标题和消息之间默认设置了边框!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2019-01-13
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    相关资源
    最近更新 更多