안 드 로 이 드 거품 창 밑 반찬 단일 인 스 턴 스 코드 구현
메모:거품 창 은 기본적으로 초점 이 없습니다.거품 창 에 초점 을 맞 춰 야 합 니 다.listview 의 item 에 Button,ImageButton,CheckBox 등 이 있 으 면 초점 을 강제로 가 져 오 는 view 가 있 습 니 다.이때 listview 의 item 은 초점 을 가 져 올 수 없어 서 해결 방법 을 클릭 할 수 없습니다.item 의 루트 레이아웃 에 다음 속성
Android:descendantFocusability="blocksDescendants"
을 추가 한 후에 Button 은 초점 을 가 져 옵 니 다.item 의 다른 컨트롤 도 초점 을 가 져 올 수 있 습 니 다.텍스트 의 텍스트 가 너무 많 으 면...뒤에 있 는 아이콘 에 가 려 집 니 다.먼저 한 줄android:singleLine="true"
을 설정 하고 오른쪽 거 리 를 설정 하면 닫 히 지 않 습 니 다android:padding="40dp"
다음 세 가 지 를 추가 해 야 합 니 다.
//
popupWindow.setFocusable(true);
//
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setOutsideTouchable(true);
주 레이아웃 파일 activitymain.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#22000000"
tools:context=".MainActivity" >
<RelativeLayout
android:layout_marginTop="40dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
>
<EditText
android:id="@+id/et"
android:singleLine="true"
android:padding="40dp"
android:layout_width="300dp"
android:layout_height="40dp"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="40dp"
android:id="@+id/iv_select"
android:layout_centerVertical="true"
android:background="@drawable/ic_launcher"
android:layout_alignRight="@id/et"
/>
</RelativeLayout>
</RelativeLayout>
각 항목 의 레이아웃 파일 itemlist.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp"
android:orientation="horizontal" >
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/ic_launcher"
android:gravity="center_vertical"
android:drawablePadding="3dp"
android:text="123"
android:id="@+id/tv_number"
android:layout_weight="1"
/>
<ImageView
android:id="@+id/iv_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_launcher"
/>
</LinearLayout>
논리 코드 MainActivity.java
package com.ldw.select;
import java.util.ArrayList;
import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener{
private ImageView iv_select;
private EditText et;
private ArrayList<String> list = new ArrayList<String>();
private TextView tv_number;
private ImageView iv_delete;
private ListView listView;
private PopupWindow popupWindow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initView();
initListener();
initData();
}
private void initView() {
setContentView(R.layout.activity_main);
iv_select = (ImageView) findViewById(R.id.iv_select);
et = (EditText) findViewById(R.id.et);
}
private void initListener() {
iv_select.setOnClickListener(this);
}
//
private void initData() {
for(int i = 0; i< 20; i++){
list.add(1340000000 + i + "");
}
initListView();
}
//
private void initListView(){
listView = new ListView(this);
// listView
listView.setBackgroundResource(R.drawable.ic_launcher);
// listView
listView.setVerticalScrollBarEnabled(false);
MyAdapter adapter = new MyAdapter();
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
et.setText(list.get(position));
//
popupWindow.dismiss();
}
});
}
// ,
private void showNumberList(){
if(popupWindow == null){
// ,
popupWindow = new PopupWindow(listView, et.getWidth(), 300);
}
//
popupWindow.setFocusable(true);
//
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setOutsideTouchable(true);
// ,x ,y ,
popupWindow.showAsDropDown(et, 0, 0);
}
@Override
public void onClick(View v){
switch (v.getId()){
case R.id.iv_select:
//
showNumberList();
break;
}
}
//listView
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final View view = View.inflate(MainActivity.this, R.layout.item_list, null);
tv_number = (TextView) view.findViewById(R.id.tv_number);
iv_delete = (ImageView) view.findViewById(R.id.iv_delete);
tv_number.setText(list.get(position));
//
iv_delete.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//
list.remove(position);
//
notifyDataSetChanged();
// ,
int listViewHeight = list.size() * view.getHeight();
if(listViewHeight > 300){
listViewHeight = 300;
}else{
listViewHeight = listViewHeight;
}
//
popupWindow.update(et.getWidth(), listViewHeight);
// ,
if(list.size() == 0){
popupWindow.dismiss();
//
iv_select.setVisibility(View.GONE);
}
}
});
return view;
}
}
}
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 안 드 로 이 드 거품 창 에서 드 롭 다운 메뉴 의 인 스 턴 스 코드 를 실현 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.