Mein Hauptlayout main.xml enthält einfach zwei LinearLayouts:
- Der 1.
LinearLayout
Gastgeber aVideoView
und aButton
, - Der 2.
LinearLayout
hostet einEditText
, und diesLinearLayout
hat den Sichtbarkeitswert auf " GONE " gesetzt (android:visibility="gone"
)
Wie unten:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical"
>
<LinearLayout
android:id="@+id/first_ll"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<VideoView
android:id="@+id/my_video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="9"
/>
<Button
android:id="@+id/my_btn"
android:layout_width="30dip"
android:layout_height="30dip"
android:layout_gravity="right|bottom"
android:layout_weight="1"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/second_ll"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="2dip"
android:visibility="gone"
>
<EditText
android:id="@+id/edit_text_field"
android:layout_height="40dip"
android:layout_width="fill_parent"
android:layout_weight="5"
android:layout_gravity="center_vertical"
/>
</LinearLayout>
</LinearLayout>
Ich implementierte erfolgreich das Merkmal , dass , wenn die Button
(mit der ID my_btn) gedrückt wird, die zweite LinearLayout
mit EditText
ist Feld angezeigt, mit dem folgenden Java - Code:
LinearLayout secondLL = (LinearLayout) findViewById(R.id.second_ll);
Button myBtn = (Button) findViewById(R.id.my_btn);
myBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
int visibility = secondLL.getVisibility();
if(visibility==View.GONE)
secondLL.setVisibility(View.VISIBLE);
}
});
Mit dem obigen Java-Code wird der 2. LinearLayout
mit EditText
wie unter dem 1. angehängt angezeigt LinearLayout
, was sinnvoll ist.
ABER , was ich brauche ist: Wenn Button
(id: my_btn) gedrückt wird, wird das 2. LinearLayout
mit EditText
oben auf dem 1. angezeigtLinearLayout
, was so aussieht, als ob das 2. LinearLayout
mit EditText
vom unteren Bildschirmrand aufsteigt, und das 2. LinearLayout
mit EditText
nur einen Teil des Bildschirm von unten, das ist das 1. LinearLayout, das noch sichtbar ist, wie das folgende Bild zeigt:
Wenn also Button
(id: my_btn) gedrückt wird, wie wird die 2. LinearLayout
mit EditText
über der 1. angezeigt, LinearLayout
anstatt die 2. programmgesteuert an die 1.LinearLayout
unter der 1. LinearLayout
anzuhängen?
TextView
oben? liegt es daran, dass es in der Auflistung an zweiter Stelle steht?Die Antwort von Alexandru funktioniert ganz gut. Wie er sagte, ist es wichtig, dass diese "Accessor" -Ansicht als letztes Element hinzugefügt wird. Hier ist ein Code, der den Trick für mich getan hat:
in Java:
quelle
FrameLayout
ist nicht der bessere Weg, dies zu tun:Verwenden Sie
RelativeLayout
stattdessen. Sie können die Elemente beliebig positionieren. Das nachfolgende Element hat den höheren Z-Index als das vorherige (dh es kommt über das vorherige).Beispiel:
quelle