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);
}
Благодарим за отзыв! Я добавил, что (довольно уверен, что он был там в предыдущей версии), но я все еще получаю серое поле без содержимого. – user3108382
Вы уверены, что добавили fl.addView (sv) перед popUp.setContentView (fl)? Хорошо работает для меня – HellCat2405
Я сделал. 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