Как установить пользовательский макет с изображением на всплывающем окне в Android? - PullRequest
0 голосов
/ 08 февраля 2019

Я хочу показать подсказку pop-up при нажатии Button.Подсказка содержит ImageView с некоторой информацией.Поскольку для этого я уже определил отдельный пользовательский Layout, мне нужно показать настраиваемое окно всплывающей подсказки при нажатии Button.Я попытался реализовать это здесь, но когда я запускаю приложение и нажимаю Button, приложение сразу падает.

Вот что я пробовал до сих пор:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp">

    <Button
        android:id="@+id/button_tooltip_bottom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="bottomToolTipDialogBox"
        android:text="ToolTip Bottom" />



</RelativeLayout>

Мой пользовательский макет для окна всплывающей подсказки:

tootlip_layout.xml:

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

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="@dimen/_10sdp"
            android:paddingTop="@dimen/_10sdp"
            android:background="@color/layout_color">


            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@android:color/black"
                android:textSize="@dimen/_12sdp"
                android:text="Arm Hole"
                android:layout_marginLeft="@dimen/_10sdp"/>

</LinearLayout>


        <ImageView
            android:layout_width="@dimen/_100sdp"
            android:layout_height="@dimen/_80sdp"
            android:layout_gravity="center_horizontal"
            android:src="@drawable/tooltippopup"/>



        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textColor="@android:color/black"
            android:textSize="@dimen/_12sdp"
            android:text="Measure your bodu at the widest point."/>




        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textColor="@android:color/black"
            android:textSize="@dimen/_12sdp"
            android:text="Stand in a relaxed position and breathe"/>


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:layout_marginLeft="@dimen/_53sdp"
            android:textColor="@android:color/black"
            android:textSize="@dimen/_12sdp"
            android:text="out"/>



    </LinearLayout>

MainActivity.java:

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

import it.sephiroth.android.library.tooltip.Tooltip;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void bottomToolTipDialogBox(View view) {
        Button toolTipShowButton = (Button) findViewById(R.id.button_tooltip_bottom);
        Tooltip.make(this,
                new Tooltip.Builder(101)
                        .anchor(toolTipShowButton, Tooltip.Gravity.BOTTOM)
                        .closePolicy(new Tooltip.ClosePolicy()
                                .insidePolicy(true, false)
                                .outsidePolicy(true, false), 4000)
                        .activateDelay(900)
                        .showDelay(400)
                        .withCustomView(R.layout.tooltip_layout)
                        .maxWidth(600)
                        .withArrow(true)
                        .withOverlay(true).build()
        ).show();
    }

}

И это сторонние зависимости, которые я использовал:

 implementation 'it.sephiroth.android.library.targettooltip:target-tooltip-library:+'

Я перешел по этой ссылке для создания всплывающей подсказкиwindow:

Создание всплывающего окна со стрелкой всплывающих подсказок в Android

Как показать окно макета настраиваемой подсказки?

...