android - 在我的情况下,如何以编程方式在另一个布局之上显示一个布局?

标签 android android-layout android-emulator android-widget android-manifest

我的主布局 ma​​in.xml 只包含两个 LinearLayout:

  • 第一个LinearLayout主持 VideoViewButton ,
  • 第二期LinearLayout主持 EditText , 而这个 LinearLayout已将 visibility 值设置为“GONE”(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) 被按下,2nd 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 代码,第二 LinearLayoutEditText显示为 在下面添加 第一个 LinearLayout这是有道理的。

但是,我需要的是:当Button (id: my_btn) 被按下,第二 LinearLayoutEditText 显示在第一 LinearLayout ,看起来像 2nd LinearLayoutEditText从屏幕底部升起,第二 LinearLayoutEditText仅从底部占据屏幕的一部分,即第一个 LinearLayout 仍然可见,如下图所示:

enter image description here

所以,当 Button (id: my_btn) 按下如何显示2nd LinearLayoutEditText 第一 LinearLayout而不是附加 2nd LinearLayout低于第一 LinearLayout以编程方式?

最佳答案

使用带有两个 child 的 FrameLayout。两个 child 会重叠。这实际上是在 Android 的一个教程中推荐的,它不是黑客......

这是一个 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>

Here is the result

关于android - 在我的情况下,如何以编程方式在另一个布局之上显示一个布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6690530/

相关文章:

android - 在 Android 操作栏中设置 SearchView 的样式

android - 如何在 REPL 中运行 android 代码

android - 在 android 中的编辑文本旁边绘制图像

android - HTC 设备 adb 错误

android - 具有自动完成功能的不同步 ArrayAdapter

android - 无论屏幕设备分辨率如何,都将按钮控件设置为适合屏幕

android - 用另一个 fragment 替换一个 fragment

android - 如何给listView这个阴影样式?

android - 主屏幕应用程序快捷方式不适用于 android。应用程序未安装

android - HoneyComb 的环境如何设置?