1. ホーム
  2. android

[解決済み] 私の場合、プログラムで1つのレイアウトを他のレイアウトの上に表示するにはどうすればよいですか?

2023-06-06 22:57:18

質問

私のメインレイアウト main.xml は単に2つのLinearLayoutを含んでいます。

  • 最初の LinearLayout をホストします。 VideoViewButton ,
  • 第2 LinearLayout をホストしています。 EditText であり、この LinearLayout が設定されており visibility の値を " に設定しています。 消える " ( android:visibility="gone" )

のようにします。

<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>

という機能を実装することに成功しました。 Button (IDがmy_btn)が押されると 2番目の LinearLayoutEditText フィールドが表示され、以下のJavaコードが表示されます。

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);

    }
}); 

上記のJavaコードで 2番目の LinearLayoutEditText のように表示されます。 のように表示されます。 第1 LinearLayout というのがありますが、これは意味があります。

しかし 私が必要とするのは、次のような場合です。 Button (id: my_btn) が押されたときに 2番目の LinearLayoutEditText の上に表示されます。 の上に表示されます。 第1 LinearLayout のように見えますが、これは 2番目の LinearLayoutEditText が画面の下から盛り上がってきていて 2番目の LinearLayoutEditText は画面の下から一部を占めるだけで、下の画像のように1つ目のLinearLayoutはまだ見えています。

ということは Button (id: my_btn) が押されたとき、どのようにして 2番目の LinearLayoutEditText の上に その 第1 LinearLayout を追加するのではなく 2番目 LinearLayout 以下 1位 LinearLayout プログラム的に?

どのように解決するのですか?

2つの子を持つFrameLayoutを使用します。2つの子要素はオーバーラップされます。これは、Android からのチュートリアルの 1 つで推奨されている実際に、それはハックではない...

TextViewをImageViewの上に表示する例です。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

  <ImageView  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 

    android:scaleType="center"
    android:src="@drawable/golden_gate" />

  <TextView
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="20dip"
    android:layout_gravity="center_horizontal|bottom"

    android:padding="12dip"

    android:background="#AA000000"
    android:textColor="#ffffffff"

    android:text="Golden Gate" />

</FrameLayout>

<イグ