Я хочу показать подсказку 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
Как показать окно макета настраиваемой подсказки?