2016-03-14 3 views
0

Я хочу посеять всплывающее окно в определенном месте в текстовом режиме (текстовое изображение находится внутри прокрутки). Мой макет PopupWindow содержит только список. Я использую ниже код для настройки ширины и высоты PopupWindow. Высота PopupWindow работает корректно, но ширина нет. На разных устройствах он отличается. Он также не деформирует ширину содержимого списка.Как настроить PopupWindow Width в Android

final PopupWindow attachmentPopup = new PopupWindow(this); 
LayoutInflater layoutInflater = getLayoutInflater(); 
View popupView = layoutInflater.inflate(R.layout.popupwindow, null); 
ListView lv = (ListView) popupView.findViewById(R.id.listView); 
final ArrayList<CustomItem> popupItems = new ArrayList<CustomItem>(); 
final CustomAdapter popupAdapter = new CustomAdapter(popupItems, Details.this); 
CustomItem item; 
item = new CustomItem(); 
item.setName("Apple"); 
popupItems.add(item); 
item = new CustomItem(); 
item.setName("Orange");   
popupItems.add(item); 
lv.setAdapter(popupAdapter); 
int popupWidth = ViewGroup.LayoutParams.WRAP_CONTENT; 
int popupHeight = ViewGroup.LayoutParams.WRAP_CONTENT; 
attachmentPopup.setFocusable(true); 
attachmentPopup.setWidth(popupWidth); 
attachmentPopup.setHeight(popupHeight); 
attachmentPopup.setContentView(popupView); 
attachmentPopup.setBackgroundDrawable(new BitmapDrawable()); 
attachmentPopup.showAtLocation(popupView, Gravity.TOP | Gravity.LEFT, mx, my); 

popupwindow.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:background="#9acd32" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/listView" /> 

</LinearLayout> 

ответ

0

Можете ли вы попробуйте заменить этот

int popupWidth = ViewGroup.LayoutParams.WRAP_CONTENT; 
int popupHeight = ViewGroup.LayoutParams.WRAP_CONTENT; 

с

int popupWidth = WindowManager.LayoutParams.WRAP_CONTENT; 
int popupHeight = WindowManager.LayoutParams.WRAP_CONTENT; 
+0

Результаты одинаковы. Я думаю, из-за listview он не измеряет ширину элементов списка правильно. – user934820

+0

@ user934820 Я не уверен, но можете ли вы попробовать установить андроид: ориентация = «вертикальная» внутри вашей линейной компоновки всплывающего окна – dex

+1

не могли бы вы разделить весь код, чтобы я мог скомпилировать в конце? – dex

Смежные вопросы