【问题标题】:Set a FrameLayout as the background of an xml layout android将FrameLayout设置为xml布局android的背景
【发布时间】:2011-03-26 10:02:42
【问题描述】:

我知道这可能很简单,但我在 android 中有一个 xml 文件,其中包含许多按钮以及一个 FrameLayout,它显示手机上相机的预览。我希望这个 FrameLayout 位于屏幕的背景中,并且所有其他按钮等都出现在它的顶部/上方。我尝试使用“重力”并将 FrameLayout 设置为 linearLayout 的背景,它全部内置但没有任何效果。知道我将如何做到这一点。

编辑: 这是我的代码。我尝试将带有预览的框架布局放在顶部,将按钮放在按钮上,但是在测试时效果不佳,所以现在我想将框架布局放在背景中。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" android:layout_width="fill_parent"
  android:layout_height="fill_parent" android:id="@+id/layout">
  <!-- <1> -->
    <AbsoluteLayout android:id="@+id/absoluteLayout1" android:layout_height="fill_parent" android:layout_width="fill_parent">
        <Button android:layout_height="50dip" android:id="@+id/buttonClick" android:layout_width="wrap_content" android:text="Click" android:layout_x="104dip" android:layout_y="161dip" android:gravity="top"></Button>
        <TextView android:layout_height="wrap_content" android:id="@+id/textView2" android:layout_width="wrap_content" android:text="Hat" android:layout_x="-4dip" android:layout_y="258dip" android:gravity="top"></TextView>
        <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/hatbox" android:layout_x="-10dip" android:layout_y="202dip" android:gravity="top"></CheckBox>
        <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/shirtbox" android:layout_x="28dip" android:layout_y="201dip" android:gravity="top"></CheckBox>
        <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/beltbox" android:layout_x="64dip" android:layout_y="201dip" android:gravity="top"></CheckBox>
        <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/pantbox" android:layout_x="100dip" android:layout_y="202dip" android:gravity="top"></CheckBox>
        <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/shoebox" android:layout_x="140dip" android:layout_y="201dip" android:gravity="top"></CheckBox>
        <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/accbox" android:layout_x="181dip" android:layout_y="201dip" android:gravity="top"></CheckBox>
        <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/jacketbox" android:layout_x="220dip" android:layout_y="201dip" android:gravity="top"></CheckBox>
        <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/dressbox" android:layout_x="257dip" android:layout_y="201dip" android:gravity="top"></CheckBox>
        <TextView android:layout_height="wrap_content" android:id="@+id/TextView03" android:layout_width="wrap_content" android:text="Shirt" android:layout_x="33dip" android:layout_y="257dip" android:gravity="top"></TextView>
        <TextView android:layout_height="wrap_content" android:id="@+id/TextView01" android:layout_width="wrap_content" android:text="Belt" android:layout_x="72dip" android:layout_y="257dip" android:gravity="top"></TextView>
        <TextView android:layout_height="wrap_content" android:id="@+id/TextView05" android:layout_width="wrap_content" android:text="Pants" android:layout_x="101dip" android:layout_y="257dip" android:gravity="top"></TextView>
        <TextView android:layout_height="wrap_content" android:id="@+id/TextView02" android:layout_width="wrap_content" android:text="Shoes" android:layout_x="140dip" android:layout_y="257dip" android:gravity="top"></TextView>
        <TextView android:layout_height="wrap_content" android:id="@+id/TextView06" android:layout_width="wrap_content" android:text="Acc" android:layout_x="189dip" android:layout_y="258dip" android:gravity="top"></TextView>
        <TextView android:layout_height="wrap_content" android:id="@+id/TextView04" android:layout_width="wrap_content" android:text="Dress" android:layout_x="261dip" android:layout_y="261dip" android:gravity="top"></TextView>
        <TextView android:layout_height="wrap_content" android:id="@+id/TextView07" android:layout_width="wrap_content" android:text="Jacket" android:layout_x="220dip" android:layout_y="258dip" android:gravity="top"></TextView>
        <FrameLayout android:layout_height="200dip" android:visibility="invisible" android:id="@+id/preview" android:layout_width="300dip" android:layout_x="1dip" android:layout_y="2dip"></FrameLayout>
    </AbsoluteLayout>
  <!-- <2> -->
  <!-- <3> -->
</LinearLayout>

编辑2: 所以它工作得很好,我正要告诉你,但突然我把它弄坏了......我正在调整按钮在屏幕上的位置,现在按钮不再可见。这是我的代码...有什么想法吗?

version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" android:id="@+id/layout">
  <!-- <1> -->
    <AbsoluteLayout android:id="@+id/absoluteLayout2" android:layout_height="fill_parent" android:layout_width="fill_parent">
        <FrameLayout android:layout_height="fill_parent" android:visibility="visible" android:id="@+id/preview" android:layout_width="fill_parent" android:layout_x="0dip" android:layout_y="0dip">
            <AbsoluteLayout android:id="@+id/absoluteLayout1" android:background="@android:color/transparent" android:layout_width="wrap_content" android:layout_height="wrap_content">
                <Button android:layout_height="50dip" android:id="@+id/buttonClick" android:layout_y="161dip" android:layout_width="wrap_content" android:text="Click" android:gravity="top" android:layout_x="130dip"></Button>
                <TextView android:layout_height="wrap_content" android:layout_y="258dip" android:id="@+id/textView2" android:layout_width="wrap_content" android:gravity="top" android:text="Hat" android:layout_x="15dip"></TextView>
                <CheckBox android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="CheckBox" android:id="@+id/hatbox" android:gravity="top" android:layout_x="10dip" android:layout_y="200dip"></CheckBox>
                <CheckBox android:layout_height="wrap_content" android:layout_y="201dip" android:layout_width="wrap_content" android:text="CheckBox" android:id="@+id/shirtbox" android:gravity="top" android:layout_x="50dip"></CheckBox>
                <CheckBox android:layout_height="wrap_content" android:layout_y="201dip" android:layout_width="wrap_content" android:text="CheckBox" android:id="@+id/beltbox" android:gravity="top" android:layout_x="90dip"></CheckBox>
                <CheckBox android:layout_height="wrap_content" android:layout_y="202dip" android:layout_width="wrap_content" android:text="CheckBox" android:id="@+id/pantbox" android:gravity="top" android:layout_x="130dip"></CheckBox>
                <CheckBox android:layout_height="wrap_content" android:layout_y="201dip" android:layout_width="wrap_content" android:text="CheckBox" android:id="@+id/shoebox" android:gravity="top" android:layout_x="170dip"></CheckBox>
                <CheckBox android:layout_height="wrap_content" android:layout_y="201dip" android:layout_width="wrap_content" android:text="CheckBox" android:id="@+id/accbox" android:gravity="top" android:layout_x="210dip"></CheckBox>
                <CheckBox android:layout_height="wrap_content" android:layout_y="201dip" android:layout_width="wrap_content" android:text="CheckBox" android:id="@+id/jacketbox" android:gravity="top" android:layout_x="247dip"></CheckBox>
                <CheckBox android:layout_height="wrap_content" android:layout_y="201dip" android:layout_width="wrap_content" android:text="CheckBox" android:id="@+id/dressbox" android:gravity="top" android:layout_x="285dip"></CheckBox>
                <TextView android:layout_height="wrap_content" android:layout_y="257dip" android:id="@+id/TextView03" android:layout_width="wrap_content" android:gravity="top" android:text="Shirt" android:layout_x="55dip"></TextView>
                <TextView android:layout_height="wrap_content" android:layout_y="257dip" android:id="@+id/TextView01" android:layout_width="wrap_content" android:gravity="top" android:text="Belt" android:layout_x="95dip"></TextView>
                <TextView android:layout_height="wrap_content" android:layout_y="257dip" android:id="@+id/TextView05" android:layout_width="wrap_content" android:gravity="top" android:text="Pants" android:layout_x="130dip"></TextView>
                <TextView android:layout_height="wrap_content" android:layout_y="257dip" android:id="@+id/TextView02" android:layout_width="wrap_content" android:gravity="top" android:text="Shoes" android:layout_x="170dip"></TextView>
                <TextView android:layout_height="wrap_content" android:layout_y="258dip" android:id="@+id/TextView06" android:layout_width="wrap_content" android:gravity="top" android:text="Acc" android:layout_x="220dip"></TextView>
                <TextView android:layout_height="wrap_content" android:layout_y="261dip" android:id="@+id/TextView04" android:layout_width="wrap_content" android:gravity="top" android:text="Dress" android:layout_x="285dip"></TextView>
                <TextView android:layout_height="wrap_content" android:layout_y="258dip" android:id="@+id/TextView07" android:layout_width="wrap_content" android:gravity="top" android:text="Jacket" android:layout_x="247dip"></TextView>
            </AbsoluteLayout>
        </FrameLayout>
    </AbsoluteLayout>
  <!-- <2> -->
  <!-- <3> -->
</LinearLayout>

【问题讨论】:

  • 这是一款 AR 应用吗?为什么不画出你的相机,然后在它上面放置一个透明的框架布局来插入你的物品呢?
  • 哦,不,我很抱歉。只需几个按钮即可选择正在拍摄的照片类型,以便将其放置在正确的文件夹中。例如,如果它是衬衫的图片,则用户选择衬衫复选框并将其放入衬衫图片文件夹
  • 哦,好吧。检查我的答案。它应该创建您正在寻找的效果。如果不发表评论,我会尽力提供更多帮助。

标签: android android-layout


【解决方案1】:

我认为您想要做的是在背景中进行相机预览,并在顶部布局所有按钮等。我假设这是某种 AR 应用程序。

要实现这一点,请进行预览并将其作为背景放入,现在只需制作另一个布局以位于此布局之上。让它的背景透明,然后把你所有的东西都放在上面。

既然你说你的相机做得很好,我将描述第二种布局。

将此视图的背景设置为透明使用

android:background="@android:color/transparent"

所以,现在您可以看到摄像头了。伟大的!只需像往常一样将您的按钮等添加到此视图中,您将创建您正在寻找的效果。

编辑澄清一下,第二种布局(带有按钮的布局)将是相机预览的子布局。

编辑:2我现在还没有 Android SDK,但无论如何我都会尝试一下...

我所做的只是让你的相机预览布局中的 Absolute 透明。试试那个代码。

   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" android:layout_width="fill_parent"
 android:layout_height="fill_parent" android:id="@+id/layout">
<!-- <1> -->
<AbsoluteLayout android:id="@+id/absoluteLayout1" android:background="@android:color/transparent" android:layout_height="fill_parent" android:layout_width="fill_parent">
    <Button android:layout_height="50dip" android:id="@+id/buttonClick" android:layout_width="wrap_content" android:text="Click" android:layout_x="104dip" android:layout_y="161dip" android:gravity="top"></Button>
    <TextView android:layout_height="wrap_content" android:id="@+id/textView2" android:layout_width="wrap_content" android:text="Hat" android:layout_x="-4dip" android:layout_y="258dip" android:gravity="top"></TextView>
    <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/hatbox" android:layout_x="-10dip" android:layout_y="202dip" android:gravity="top"></CheckBox>
    <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/shirtbox" android:layout_x="28dip" android:layout_y="201dip" android:gravity="top"></CheckBox>
    <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/beltbox" android:layout_x="64dip" android:layout_y="201dip" android:gravity="top"></CheckBox>
    <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/pantbox" android:layout_x="100dip" android:layout_y="202dip" android:gravity="top"></CheckBox>
    <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/shoebox" android:layout_x="140dip" android:layout_y="201dip" android:gravity="top"></CheckBox>
    <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/accbox" android:layout_x="181dip" android:layout_y="201dip" android:gravity="top"></CheckBox>
    <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/jacketbox" android:layout_x="220dip" android:layout_y="201dip" android:gravity="top"></CheckBox>
    <CheckBox android:layout_height="wrap_content" android:text="CheckBox" android:layout_width="wrap_content" android:id="@+id/dressbox" android:layout_x="257dip" android:layout_y="201dip" android:gravity="top"></CheckBox>
    <TextView android:layout_height="wrap_content" android:id="@+id/TextView03" android:layout_width="wrap_content" android:text="Shirt" android:layout_x="33dip" android:layout_y="257dip" android:gravity="top"></TextView>
    <TextView android:layout_height="wrap_content" android:id="@+id/TextView01" android:layout_width="wrap_content" android:text="Belt" android:layout_x="72dip" android:layout_y="257dip" android:gravity="top"></TextView>
    <TextView android:layout_height="wrap_content" android:id="@+id/TextView05" android:layout_width="wrap_content" android:text="Pants" android:layout_x="101dip" android:layout_y="257dip" android:gravity="top"></TextView>
    <TextView android:layout_height="wrap_content" android:id="@+id/TextView02" android:layout_width="wrap_content" android:text="Shoes" android:layout_x="140dip" android:layout_y="257dip" android:gravity="top"></TextView>
    <TextView android:layout_height="wrap_content" android:id="@+id/TextView06" android:layout_width="wrap_content" android:text="Acc" android:layout_x="189dip" android:layout_y="258dip" android:gravity="top"></TextView>
    <TextView android:layout_height="wrap_content" android:id="@+id/TextView04" android:layout_width="wrap_content" android:text="Dress" android:layout_x="261dip" android:layout_y="261dip" android:gravity="top"></TextView>
    <TextView android:layout_height="wrap_content" android:id="@+id/TextView07" android:layout_width="wrap_content" android:text="Jacket" android:layout_x="220dip" android:layout_y="258dip" android:gravity="top"></TextView>
    <FrameLayout android:layout_height="200dip" android:visibility="invisible" android:id="@+id/preview" android:layout_width="300dip" android:layout_x="1dip" android:layout_y="2dip"></FrameLayout>
</AbsoluteLayout>
<!-- <2> -->
<!-- <3> -->
</LinearLayout>

EDIT3

只是一些进一步的澄清。我正在描述的应用程序在线性布局中具有相机预览。你把绝对性放在里面,因为它是孩子。将它的背景设置为透明,因此它的背景现在是相机预览。完成所有这些操作后,您将按钮等附加到绝对布局中,创建我在下面的 cmets 中链接的效果。

【讨论】:

  • 但是为什么这条线是透明的?它下面没有预览。我以为预览是父母和孩子的按钮。这似乎是相反的?不?
  • 你想创建一些类似这样的效果:upload.wikimedia.org/wikipedia/commons/7/73/Wikitude.jpg 不是吗?你在哪里有相机,你可以在它上面画你的元素。通过这样做,您可以在 LinearLayout 中获得相机预览,并且当您将绝对设置为透明时,“背景”将成为相机预览和您的按钮并呈现在相机顶部。
  • 是的,这正是我想要做的。我将尝试使它现在工作并回复您,感谢您的所有帮助!
  • 没问题,我会在接下来的一段时间里。如果您有任何进一步的困难,请告诉我!很高兴知道你最后也把它整理好了! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
相关资源
最近更新 更多