【问题标题】:Android PopupWindow with Tooltip Arrow带有工具提示箭头的 Android PopupWindow
【发布时间】:2014-01-09 21:25:26
【问题描述】:

我已经看到很多关于通过将 null 或 new Drawable() 传递给 setBackgroundDrawable() 来移除 PopupWindow 边框的问题。我遇到了相反的问题。我想要我的 PopupWindow 周围的边框,最好有一个指向我的锚点的工具提示箭头。目前,我的 PopupWindow 没有边框。我尝试调整边距、xml 中的背景、布局的宽度和高度、列表视图和列表视图行,但无济于事。有人可以帮我在顶部获得边框和图像吗?我正在尝试使用 android SDK。

popup_menu_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"    
    android:orientation="vertical" >

    <com.github.jeremiemartinez.refreshlistview.RefreshListView
        android:id="@+id/popup_menu_list_listview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/color_white" />

</LinearLayout>

Java

private void displayPopupMenu() {
        LayoutInflater layoutInflater = getLayoutInflater();
        View popupView = layoutInflater.inflate(R.layout.popup_menu_list, null);        
        final PopupWindow popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);       
        RefreshListView myListView = (RefreshListView) popupView.findViewById(R.id.popup_menu_list_listview);       
        mAdapter = new myAdapter(this, getAdapterData());       
        myListView.setAdapter(mAdapter);            
        popupWindow.showAsDropDown(mMyAnchor);      
    }

我只是将这些作为示例,但我想要这样的东西,弹出窗口指向锚点:

但我得到这样的东西:

【问题讨论】:

  • 编辑了所需的 PopupWindow 外观示例

标签: android popupwindow


【解决方案1】:

Market 中有许多可用的库和代码。链接如下:

这是 QuickAction UI 模式。看看:

  1. QuickAction-Dialog

  2. Quick-action-pattern-in-Android

  3. Chrome Style Help Popups

另一种选择是“超级工具提示”:

https://github.com/nhaarman/supertooltips

这是一个演示:

https://play.google.com/store/apps/details?id=com.haarman.supertooltips

从第一个链接/示例如下图所示。 这些只是演示,但您可以根据需要进行自定义。

【讨论】:

  • 先生,你在 eclipse 中给出的链接说依赖
  • github.com/nhaarman/supertooltips 这是链接我不知道怎么添加依赖
  • @tushar.narang 首先你需要在你的工作空间中添加这个库,然后在你的项目中引用库
  • 先生比较新,你能给个链接吗
  • 对于 SuperToolTip 确保它在 RelativeLayout 而不是 LinearLayout 内。
【解决方案2】:

如果您正在寻找一个简单的库,我基于 PopupWindow 创建了一个。

https://github.com/douglasjunior/android-simple-tooltip

【讨论】:

  • 嗨@Douglas Nassif Roma Junior,我检查了你的图书馆,它很棒。你能告诉我如何让它在Dialog上工作吗?谢谢
  • 当前版本的示例项目有一个如何与对话框一起使用的示例。 Take a look
  • 您好,它适用于 API 26,但对于低于 26 的 API,在屏幕上的错误位置显示工具提示。您能否提出可能的原因或解决方法?
【解决方案3】:

您可以简单地将 PopupWindow 与带有矢量背景的视图一起使用:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="20dp"
    android:viewportHeight="162"
    android:viewportWidth="196">
    <path
        android:fillColor="@color/black"
        android:pathData="M0 26.9917C0 12.0846 12.09433 0 26.99583 0L169.0042 0C183.9136 0 196 12.09104 196 26.9917L196 100.0083C196 114.9154 183.9057 127 169.0042 127L124 127L98.5 162L73 127L26.99583 127C12.08644 127 0 114.909 0 100.0083L0 26.9917" />
</vector>

【讨论】:

  • 能否请您发布相同的矢量图像,但向上箭头
【解决方案4】:

对于 Android 8.0(API 级别 26)或更高版本,您可以使用:

<android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:tooltipText="Send an email" />

在你的代码中:

// Kotlin
val fab: FloatingActionButton = findViewById(R.id.fab)
fab.tooltipText = "Some tooltip"
// Java
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setTooltipText("Some tooltip");

【讨论】:

    【解决方案5】:

    https://github.com/skydoves/Balloon

    这个库提供了一个轻量级的弹出式工具提示,可以通过箭头和动画完全自定义。 100% Kotlin 和所有必要的文档。它也在积极管理中。

    这是他们页面上的一些 gif;

    另一个,

    【讨论】:

      【解决方案6】:

      可以在https://github.com/florent37/ViewTooltip 找到更深入的答案,它允许您控制许多事情,包括您的视线方向。讨论和一些方法可以找到here

      编辑: 这是一个示例 gif:

      【讨论】:

      • gradle 无法编译
      • 适用于位置 BOTTOM,但不适用于位置 TOP。
      【解决方案7】:

      您可以仅使用 xml 创建自己的自定义工具提示。我基于PopupWindow写了一个demohttps://github.com/nidhinek/android-tooltip

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-20
        • 1970-01-01
        • 2015-06-24
        • 1970-01-01
        • 1970-01-01
        • 2017-06-16
        • 1970-01-01
        相关资源
        最近更新 更多