NewbieGuide
NewbieGuide copied to clipboard
没找到方法给relativeGuide里的view设置点击事件,注意,不是高亮区域
求教,开发者自己也说了相对布局是因为直接setLayoutRes不准确才提出的,那么假设他逻辑严谨、记忆力好且手脚勤快,那么他应该是写了的啊?
看了下2.4版本的源码,确实没设置的地方。不过可以通过取巧的方式给RelativeGuide设置点击事件:
在show()方法调用的时候,会将一个FrameLayout给添加到contentView中,那时候再findViewById就好了,不过需要确保目标的id是全局唯一的,不然可能会找错。
.setOnGuideChangedListener(new OnGuideChangedListener() {
@Override
public void onShowed(Controller controller) {
// 在这里设置RelativeGuide的点击事件,要确保该View的id在此activity中是唯一的!
if (getActivity() != null) {
View cancelBtn = getActivity().findViewById(R.id.guideCancelBtn);
if (cancelBtn != null) {
getActivity().findViewById(R.id.guideCancelBtn)
.setOnClickListener(v -> cardGuid.remove());
}
}
}
@Override
public void onRemoved(Controller controller) {
}
})
楼上说的方法可以解决,就很棒
也可以像这样设置 在填充监听中获取到view并给该view设置点击事件 GuidePage.newInstance() .addHighLight(main_newGame) // .addHighLightWithOptions(main_continueGame, options) // .addHighLight(main_history, HighLight.Shape.ROUND_RECTANGLE, 25, 0, null) .setLayoutRes(R.layout.guide_btn) .setEverywhereCancelable(false) .setOnLayoutInflatedListener { view, controller -> view.findViewById<TextView>(R.id.textView3).setOnClickListener { controller.remove() } }
controller.remove() 直接就中断引导了?还有啥好方法吗
@AItsuki 请问一下,我是在fragment内,并且是多层的,该怎么设置呢? 我想要获取第四层relativeGuide布局子view的点击事件,我这样写始终获取不响应点击事件,该怎么解决呢? @Override public void guide(Fragment fragment, ConstraintLayout mLandServiceLayout, ConstraintLayout mLandLayout, ConstraintLayout mInvestLayout, ConstraintLayout mFastLayout, TextView mGuideFive) { NewbieGuide.with(fragment) .setLabel("第一层") .alwaysShow(true)//总是显示 true ,调试时可以打开 .addGuidePage(GuidePage.newInstance() //1.需要高亮的view , 2.高亮类型(圆,矩形,椭圆,圆角矩形...) 3.圆角大小 .addHighLight(mLandServiceLayout, HighLight.Shape.ROUND_RECTANGLE,10,0,null) .setEverywhereCancelable(false) //是否点击任意位置消失引导页,默认true .setLayoutRes(R.layout.handle_guide_one, R.id.btn_handle_guid_one_next) .setOnLayoutInflatedListener(new OnLayoutInflatedListener() { @Override public void onLayoutInflated(View view, Controller controller) { TextView finish = view.findViewById(R.id.tv_handle_guid_one_finish); finish.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下划线 finish.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { controller.remove();//跳过 } }); view.findViewById(R.id.btn_handle_guid_one_next).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { controller.showPage(1);//点击显示第二层 } }); } })) .setLabel("第二层") .addGuidePage(GuidePage.newInstance() .addHighLight(mLandLayout,HighLight.Shape.ROUND_RECTANGLE,10,0,null) .setEverywhereCancelable(false) //是否点击任意位置消失引导页,默认true .setLayoutRes(R.layout.handle_guide_two, R.id.btn_handle_guid_two_next) .setOnLayoutInflatedListener(new OnLayoutInflatedListener() { @Override public void onLayoutInflated(View view, Controller controller) { TextView finish = view.findViewById(R.id.tv_handle_guid_two_finish); finish.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下划线 finish.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { controller.remove();//跳过 } }); view.findViewById(R.id.btn_handle_guid_two_next).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { controller.showPage(2);//点击显示第三层 } }); } })) .setLabel("第三层") .addGuidePage(GuidePage.newInstance() .addHighLight(mInvestLayout,HighLight.Shape.ROUND_RECTANGLE,10,0,null) .setEverywhereCancelable(false) //是否点击任意位置消失引导页,默认true .setLayoutRes(R.layout.handle_guide_three, R.id.btn_handle_guid_three_next) .setOnLayoutInflatedListener(new OnLayoutInflatedListener() { @Override public void onLayoutInflated(View view, Controller controller) { TextView finish = view.findViewById(R.id.tv_handle_guid_three_finish); finish.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下划线 finish.findViewById(R.id.tv_handle_guid_three_finish).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { controller.remove();//跳过 } }); view.findViewById(R.id.btn_handle_guid_three_next).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { controller.showPage(3);//点击显示第四层 } }); } })) .setLabel("第四层") .addGuidePage(GuidePage.newInstance() .addHighLight(mFastLayout,HighLight.Shape.ROUND_RECTANGLE,10,0,new RelativeGuide(R.layout.handle_guide_four, Gravity.TOP, 0)) .setEverywhereCancelable(false) //是否点击任意位置消失引导页,默认true ) .setOnGuideChangedListener(new OnGuideChangedListener() { @Override public void onShowed(Controller controller) {
LogUtils.d("1053 111111111111111111111"+mActivity);
// 在这里设置RelativeGuide的点击事件,要确保该View的id在此activity中是唯一的!
if (mActivity != null) {
View cancelBtn = fragment.getActivity().findViewById(R.id.tv_handle_guid_four_finish);
if (cancelBtn != null) {
fragment.getActivity().findViewById(R.id.tv_handle_guid_four_finish).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//点击无响应
Toast.makeText(mActivity, "111111111", Toast.LENGTH_SHORT).show();
}
});
}
}
}
@Override
public void onRemoved(Controller controller) {
}
})
.setLabel("第五层")
.addGuidePage(GuidePage.newInstance()
.addHighLight(mGuideFive,HighLight.Shape.ROUND_RECTANGLE,10,0,null)
.setEverywhereCancelable(false) //是否点击任意位置消失引导页,默认true
.setLayoutRes(R.layout.handle_guide_five, R.id.btn_handle_guid_five_next)
.setOnLayoutInflatedListener(new OnLayoutInflatedListener() {
@Override
public void onLayoutInflated(View view, Controller controller) {
view.findViewById(R.id.btn_handle_guid_five_next).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
controller.remove();//最后一页就移除所有遮罩
}
});
}
}))
.show();
}