2014-12-27 13 views
7

Chciałem ustawić programowo wyświetlanie marginesu. Tu jest mój XML:Ustawiony fabrycznie margines widoku systemu Android:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/llAttendeeList" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:background="#000000"> 

<ListView 
    android:id="@+id/attendeelistview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"  
    android:listSelector="#F6CECE" > 
</ListView> 

</LinearLayout> 

A kiedy moja metoda przycisk onClick zawołać widoku Okno podręczne:

private void openPopUp() { 
    LayoutInflater layoutInflater = (LayoutInflater) getActivity() 
      .getBaseContext().getSystemService(
        context.LAYOUT_INFLATER_SERVICE); 
    View popupView = layoutInflater.inflate(R.layout.event_attendee_pop, 
      null); 
    llAttendeeList = (LinearLayout) popupView 
      .findViewById(R.id.llAttendeeList); 
    attendeeListView = (ListView) popupView.findViewById(R.id.attendeelistview); 


    LayoutParams params = new LayoutParams(
      LayoutParams.WRAP_CONTENT,  
      LayoutParams.WRAP_CONTENT 
    ); 
    params.setMargins(10, 10, 10, 0); 
    popupView.setLayoutParams(params); 

    final PopupWindow popupWindow = new PopupWindow(popupView, 
      LayoutParams.WRAP_CONTENT, 350); 
    popupWindow.setOutsideTouchable(true); 
    popupWindow.setBackgroundDrawable(new BitmapDrawable()); 

    popupWindow.setTouchInterceptor(new OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { 
       popupWindow.dismiss(); 
       return true; 
      } 
      return false; 
     } 
    }); 
    popupWindow.showAtLocation(popupView, Gravity.CENTER, 0, 0); 
    mAdapter = new ListAdapter(getActivity()); 
    attendeeListView.setAdapter(mAdapter); 
} 

Próbowałem ustawić margines do popupView ale bez powodzenia. Margines nie istnieje. Zastanawiam się, która część go zastępuje.

Z góry dziękuję.

Odpowiedz

5

ręcznie ustawić szerokość i wysokość PopupWindow:

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int height = size.y; 

popupWindow.setWidth(width-10); 
popupWindow.setHeight(height-10); 
+0

Wielkie dzięki! To działa! – hyperfkcb

+0

@ Denise, Cieszę się, że mogę ci pomóc. –

2

spróbować użyć układ będzie pracować

LinearLayout.LayoutParams params = new LayoutParams 
(

    LayoutParams.WRAP_CONTENT,   
    LayoutParams.WRAP_CONTENT 
); 

params.setMargins(left, top, right, bottom); 
yourbutton.setLayoutParams(params); 

śledzić ten tutorial http://www.codota.com/android/classes/android.view.ViewGroup.MarginLayoutParams

+0

ja nie wykorzystane. Możesz sprawdzić pytanie, które napisałem. – hyperfkcb

+0

Przepraszam, ale czy edytowałeś swoją odpowiedź? – hyperfkcb

+0

spróbuj dodać LinearLayout.LayoutParams, ponieważ zależy to od tego, jakiego układu używasz brata .. –

Powiązane problemy