接上篇文章Popupwindow的使用記錄
在使用這個(gè)庫的一個(gè)收獲(其實(shí)是我忘記怎么設(shè)置了)玩郊。
直接上代碼:
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mPopWindow != null) {
mPopWindow.dissmiss();
}
String showContent = "";
switch (v.getId()) {
case R.id.tv_pop_01:
showContent = "點(diǎn)擊 1";
break;
case R.id.tv_pop_02:
showContent = "點(diǎn)擊 2";
break;
case R.id.tv_pop_03:
showContent = "點(diǎn)擊 3";
break;
case R.id.tv_pop_04:
showContent = "點(diǎn)擊 4";
break;
case R.id.iv_popw_exit:
showContent = "";
break;
}
if (!TextUtils.isEmpty(showContent))
ToastUtils.showShort(getActivity(), showContent);
}
};
contentView.findViewById(R.id.tv_pop_01).setOnClickListener(listener);
contentView.findViewById(R.id.tv_pop_02).setOnClickListener(listener);
contentView.findViewById(R.id.tv_pop_03).setOnClickListener(listener);
contentView.findViewById(R.id.tv_pop_04).setOnClickListener(listener);
contentView.findViewById(R.id.iv_popw_exit).setOnClickListener(listener);
當(dāng)時(shí)腦子轉(zhuǎn)不過彎來枚尼,正在想Popupwindow里面的子View的點(diǎn)擊事件該怎么設(shè)置,看了下作者的源代碼更胖,如上面所示铛铁。
現(xiàn)在一看隔显,這不就是以前學(xué)習(xí)的View的點(diǎn)擊事件的設(shè)置么,應(yīng)該是有5種方式來設(shè)置View的點(diǎn)擊事件饵逐,現(xiàn)在已經(jīng)忘的差不多了括眠,每天就知道用 ButterKnife .......
整理一下思路, 記錄View的點(diǎn)擊事件倍权,順便回顧一下知識(shí)掷豺。
View 點(diǎn)擊事件的設(shè)置方法:
1、 直接在布局文件中設(shè)置薄声,如下圖所示:
布局中設(shè)置點(diǎn)擊事件.png
其中 onClick 里面的名稱是在代碼中點(diǎn)擊事件對(duì)應(yīng)的方法名稱当船。
代碼中對(duì)點(diǎn)擊事件的處理,如下圖所示:
布局中設(shè)置點(diǎn)擊事件_代碼.png
2默辨、 代碼中設(shè)置
2.1 讓Activity或者Fragment 實(shí)現(xiàn)點(diǎn)擊事件方法
例如: public class MainActivity extends AppCompatActivity implements View.OnClickListener
然后在 實(shí)現(xiàn)的方法中通過View 的 id 來設(shè)置相應(yīng)的點(diǎn)擊事件的處理德频。
2.2 直接使用匿名內(nèi)部類,直接點(diǎn)擊處理事件
TextView tv = (TextView) contentView.findViewById(R.id.tv_pop_01);
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do something
}
});
2.3 建立一個(gè)類缩幸,實(shí)現(xiàn) implements View.OnClickListener
,View設(shè)置監(jiān)聽器為新建的這個(gè)類壹置,這個(gè)類中處理點(diǎn)擊事件
建立類:
public class testListener implements View.OnClickListener{
@Override
public void onClick(View v) {
}
}
View設(shè)置點(diǎn)擊事件
TextView tv = (TextView) contentView.findViewById(R.id.tv_pop_01);
tv.setOnClickListener(new testListener());