MenuItem
にツールチップを表示しようとしています。このMavenのリポジトリからcompile 'com.github.xizzhu:simple-tool-tip:0.5.0'
:maven { url "https://jitpack.io" }
MenuItemのAndroidツールチップ
私はこのライブラリを使用しています。 MenuItem
のビューを取得して、ToolTip
のアンカーとして使用しますが、toolTipView.show()
メソッドでnullPointerException
を起動しています。 アプリをデバッグすると、View
の項目が正しいです。 View
アイテムをフローティングボタンファブに置き換えると、完全に機能します。
ある時点では機能しましたが、ToolTip
の位置が間違っていました。画面の左上隅に、正しい位置ではなく、View
の項目に表示されます。
注:この方法より前にOnViewCreated()
が実行されているので、OnCreateOptionsMenu()
内にToolTip
を作成しています。
他のコードが必要な場合は、アップロードすることができます。
メニュー:
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tooltipproto="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings"
tooltipproto:actionViewClass="android.widget.ImageButton"
android:title="@string/action_settings"
tooltipproto:showAsAction="always" />
</menu>
フラグメント:
package com.tooltipproto;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import com.github.xizzhu.simpletooltip.ToolTip;
import com.github.xizzhu.simpletooltip.ToolTipView;
public class ShowFragment extends Fragment{
View item;
FloatingActionButton fab;
public ShowFragment(){
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_main, menu);
MenuItem menuItem = menu.findItem(R.id.action_settings);
item = menuItem.getActionView();
ToolTip toolTip = new ToolTip.Builder()
.withText("Simple Tool Tip!")
.withTextSize(50)
.withPadding(10,10,10,10)
.withCornerRadius(10)
.build();
final ToolTipView toolTipView = new ToolTipView.Builder(getActivity())
.withAnchor(item)
.withToolTip(toolTip)
.withGravity(Gravity.BOTTOM)
.build();
toolTipView.show();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
// Defines the xml file for the fragment
setHasOptionsMenu(true);
fab = (FloatingActionButton) getActivity().findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
setHasOptionsMenu(true);
return inflater.inflate(R.layout.fragment, parent, false);
}
}
を使用します。このアクティビティのonCreate()のメニュー項目にこのツールチップを使用する方法を教えてください。 –