2015-10-15 3 views
0

Что не так с этим кодом?Android Programmatic Popup ScrollView TextView

Отображается только серое всплывающее окно, не отображается ScrollView или TextView.

Однако, если я добавлю кнопку, обозначенную ложной ветвью, появится кнопка.

Здесь я добавляю больше текста, потому что SO не даст мне опубликовать текст без текста.

Спасибо!

static PopupWindow DebugScreen(Activity a) 
{ 
    final PopupWindow popUp = new PopupWindow(a); 

    final View cv = a.getWindow().getDecorView().findViewById(android.R.id.content); 

    FrameLayout.LayoutParams p = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, Gravity.TOP); 
    FrameLayout fl = new FrameLayout(a); 
    fl.setLayoutParams(p); 

    final ScrollView sv = new ScrollView(a); 
    final TextView tv = new TextView(a); 

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) (cv.getHeight() * 0.9), Gravity.TOP); 

    tv.setText("Hello World"); 
    tv.setMovementMethod(LinkMovementMethod.getInstance()); 
    tv.setLayoutParams(lp); 

    sv.addView(tv, lp); 

    if (false) { 
     final Button b; 
     b = new Button(a); 
     b.setText("abc123"); 
     b.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
     fl.addView(b); 
    } 

    popUp.setContentView(fl); 

    popUp.showAtLocation(cv, Gravity.BOTTOM, 0, 0); 
    popUp.setFocusable(false); 
    popUp.setOutsideTouchable(true); 
    popUp.setTouchable(true); 

    popUp.setTouchInterceptor(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { 
       popUp.dismiss(); 
       return true; 
      } 
      return false; 
     } 
    }); 
    popUp.update(0, 0, (int) (cv.getWidth() * 0.9), cv.getHeight()); 
    return(popUp); 
} 

ответ

0

Вы пропустили fl.addView(sv); добавить Scrollview к FrameLayout. Добавьте его до popUp.setContentView(fl);, чтобы увидеть TextView.

+0

Благодарим за отзыв! Я добавил, что (довольно уверен, что он был там в предыдущей версии), но я все еще получаю серое поле без содержимого. – user3108382

+0

Вы уверены, что добавили fl.addView (sv) перед popUp.setContentView (fl)? Хорошо работает для меня – HellCat2405

+0

Я сделал. tv.setText («Hello World»); tv.setMovementMethod (LinkMovementMethod.getInstance()); tv.setLayoutParams (lp); sv.addView (tv, lp); fl.addView (sv); if (false) { final Button b; b = новая кнопка (a); b.setText ("abc123"); b.setLayoutParams (новая ViewGroup.LayoutParams (ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); fl.addView (b); } popUp.setContentView (fl); – user3108382

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