Android 에 서 는 PopupWindow 를 사용 하여 위 챗 포인트 칭찬 과 댓 글 팝 업 을 모방 합 니 다.
7013 단어 androidpopupwindow
팝 업 윈도,팝 업 상 자 는 팝 업 윈도 우 를 사용 하여 이 루어 집 니 다.이것 은 칭찬 과 댓 글 의 매개체 입 니 다.구체 적 으로 팝 업 윈도 우 는 비 창 위 치 를 클릭 하고 사라 지 거나 위 치 를 표시 하 는 문제(해당 더 많은 단추 의 위치 에 따라 팝 업 윈도 의 표시 위 치 를 확인 해 야 합 니 다.
package com.example.cmm.helloworld;
import android.app.AlertDialog;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private PopupWindow mMorePopupWindow;
private int mShowMorePopupWindowWidth;
private int mShowMorePopupWindowHeight;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView) findViewById(R.id.listview);
lv.setAdapter(new MyAdapter(MainActivity.this, getData()));
}
private List<Data> getData() {
List<Data> data = new ArrayList<>();
data.add(new Data(R.drawable.xiaona, " ", " , ", " "));
data.add(new Data(R.drawable.xueyan, " ", " , , ", " "));
data.add(new Data(R.drawable.leishao, " _CL", " , ,now", " "));
data.add(new Data(R.drawable.yuhong, " ", " ", " "));
data.add(new Data(R.drawable.lanshan, " ", " ×, ", " "));
return data;
}
class MyAdapter extends BaseAdapter {
private List<Data> listdata;
private Context context;
public MyAdapter(Context context, List<Data> listdata) {
this.context = context;
this.listdata = listdata;
}
@Override
public int getCount() {
return listdata.size();
}
@Override
public Object getItem(int arg0) {
return listdata.get(arg0);
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.listview_item, null, false);
//
ImageView ivPortrait = (ImageView) convertView.findViewById(R.id.portrait);
TextView tvNickName = (TextView) convertView.findViewById(R.id.nick_name);
TextView tvContent = (TextView) convertView.findViewById(R.id.content);
TextView tvCreatedAt = (TextView) convertView.findViewById(R.id.created_at);
ImageView moreBtn = (ImageView) convertView.findViewById(R.id.more_btn);
//
Data data = listdata.get(position);
ivPortrait.setImageResource(data.getPortraitId());
tvNickName.setText(data.getNickName());
tvContent.setText(data.getContent());
tvCreatedAt.setText(data.getCreatedAt());
//
moreBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showMore(v);
}
});
return convertView;
}
/**
*
*
* @param moreBtnView
*/
private void showMore(View moreBtnView) {
if (mMorePopupWindow == null) {
LayoutInflater li = (LayoutInflater) MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View content = li.inflate(R.layout.layout_more, null, false);
mMorePopupWindow = new PopupWindow(content, ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
mMorePopupWindow.setBackgroundDrawable(new BitmapDrawable());
mMorePopupWindow.setOutsideTouchable(true);
mMorePopupWindow.setTouchable(true);
content.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
mShowMorePopupWindowWidth = content.getMeasuredWidth();
mShowMorePopupWindowHeight = content.getMeasuredHeight();
View parent = mMorePopupWindow.getContentView();
TextView like = (TextView) parent.findViewById(R.id.like);
TextView comment = (TextView) parent.findViewById(R.id.comment);
//
like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
alert.setTitle(" ");
alert.setNegativeButton(" ", null);
alert.show();
}
});
//
comment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
alert.setTitle(" ");
alert.setNegativeButton(" ", null);
alert.show();
}
});
}
if (mMorePopupWindow.isShowing()) {
mMorePopupWindow.dismiss();
} else {
int heightMoreBtnView = moreBtnView.getHeight();
mMorePopupWindow.showAsDropDown(moreBtnView, -mShowMorePopupWindowWidth,
-(mShowMorePopupWindowHeight + heightMoreBtnView) / 2);
}
}
}
class Data {
private int portraitId; //
private String nickName; //
private String content; //
private String createdAt; //
public Data(int portraitId, String nickName, String content, String createdAt) {
this.portraitId = portraitId;
this.nickName = nickName;
this.content = content;
this.createdAt = createdAt;
}
public int getPortraitId() {
return portraitId;
}
public String getNickName() {
return nickName;
}
public String getContent() {
return content;
}
public String getCreatedAt() {
return createdAt;
}
}
}
위 에서 말 한 것 은 편집장 이 소개 한 안 드 로 이 드 에서 PopupWindow 를 사용 하여 위 챗 포인트 와 댓 글 을 모방 하여 팝 업 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.편집장 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.