Ich habe dieses Layout:
Es ist ein RelativeLayout über einer Leinwand. Am Anfang ist es unsichtbar, aber wenn ein Benutzer auf einen Button klickt, sollte das Layout sichtbar werden. Das Problem ist, dass es nicht sichtbar wird. Das Layout ist da, aber es wird einfach nicht gezeichnet. Wenn ich auf die Stelle drücke, an der das Layout erscheinen sollte, empfängt es das Ereignis und öffnet die Tastatur, aber es zeichnet nicht das gesamte Layout. Was ist das Problem?
Wenn ich das RelativeLayout zu Beginn auf sichtbar setze, funktioniert es einwandfrei. Es zeigt das Layout an und wenn ich zwischen unsichtbar und sichtbar wechsle, funktioniert es einwandfrei.
Ich habe einen Workaround gemacht, der fast immer funktioniert. Ich lasse das Layout zu Beginn sichtbar und mache dann folgendes im OnCreate:
chatLayout.postDelayed(new Runnable() {
@Override
public void run() {
chatLayout.setVisibility(View.INVISIBLE);
}
}, 50);
Aber ich mag es nicht und möchte verstehen, was das Problem ist.
Der Code:
Es beginnt mit einem Canvas-Button, der eine Nachricht an einen Handler sendet:
public void showInputLayout() {
Message.obtain(gameHandler, SHOW_INPUT_LAYOUT).sendToTarget();
}
Im Handler:
case SHOW_INPUT_LAYOUT:
gameActivity.setChatVisibility(true);
break;
setChatVisibility:
public void setChatVisibility(boolean isVisible) {
int visible = isVisible ? View.VISIBLE : View.INVISIBLE;
chatLayout.setVisibility(visible);
if(isVisible){
chatEditText.setFocusable(true);
chatEditText.requestFocus();
}
}