Android 布局问题-无法在框架布局下方显示视图
我正在开发一款有付费版和免费版的应用程序。这两个版本都显示一个地图,可以是Google地图,也可以是OSM派生的地图,我通过为每个地图加载不同的地图片段来处理它们之间的切换。还有两个按钮需要随时显示。在Honeycom和更高版本上,我可以通过在拆分操作栏中执行这些按钮操作来处理此问题,但出于向后兼容性的原因,如果Android版本早于Honeycom,我还使用框架布局使这些按钮显示在地图顶部 在付费版本中,地图将占据所有可用的屏幕空间。问题是,对于免费版本,我需要在顶部有一个广告横幅,在底部有一个链接到我公司网站的图像,中间有一个地图片段。我目前正在使用一个文本视图作为占位符,我可以看到顶部的文本视图,但不能看到底部的文本视图 这是我的布局文件:Android 布局问题-无法在框架布局下方显示视图,android,Android,我正在开发一款有付费版和免费版的应用程序。这两个版本都显示一个地图,可以是Google地图,也可以是OSM派生的地图,我通过为每个地图加载不同的地图片段来处理它们之间的切换。还有两个按钮需要随时显示。在Honeycom和更高版本上,我可以通过在拆分操作栏中执行这些按钮操作来处理此问题,但出于向后兼容性的原因,如果Android版本早于Honeycom,我还使用框架布局使这些按钮显示在地图顶部 在付费版本中,地图将占据所有可用的屏幕空间。问题是,对于免费版本,我需要在顶部有一个广告横幅,在底部有一
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MapScreen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/advertisement"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Advertisement placeholder"
android:layout_gravity="center_horizontal"
android:visibility="gone"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:id="@+id/map_fragment_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>
<LinearLayout
android:id="@+id/map_screen_button_container"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00000000"
android:paddingBottom="22dp"
android:gravity="center_horizontal"
android:visibility="gone">
<Button
android:id="@+id/main_button_normal"
android:onClick="callbackRequest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/menu_callback_request"
android:layout_gravity="bottom"/>
<Button
android:id="@+id/main_button_emergency"
android:onClick="emergencyCallbackRequest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/menu_emergency_request"
android:layout_gravity="bottom"/>
</LinearLayout>
</FrameLayout>
<TextView
android:id="@+id/company_banner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Company Banner Placeholder"
android:layout_gravity="center_horizontal"
android:visibility="gone"/>
</LinearLayout>
如何更改此布局文件以显示两个TextView对象,而不破坏布局在FrameLayout中的显示方式?请尝试此布局文件以获得免费版本
<TextView
android:id="@+id/advertisement"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_gravity="center_horizontal"
android:text="Advertisement placeholder"
android:visibility="visible" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/company_banner"
android:layout_below="@id/advertisement" >
<LinearLayout
android:id="@+id/map_fragment_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
<LinearLayout
android:id="@+id/map_screen_button_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00000000"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:paddingBottom="22dp"
android:visibility="visible" >
<Button
android:id="@+id/main_button_normal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:drawableLeft="@drawable/menu_callback_request"
android:onClick="callbackRequest" />
<Button
android:id="@+id/main_button_emergency"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:drawableLeft="@drawable/menu_emergency_request"
android:onClick="emergencyCallbackRequest" />
</LinearLayout>
</FrameLayout>
<TextView
android:id="@+id/company_banner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="center_horizontal"
android:text="Company Banner Placeholder"
android:visibility="visible" />
您已经在FrameLayout上设置了
android:layout\u height=“fill\u parent”
。将此更改为wrap\u content
并重试。为什么不为免费版本制作一个单独的布局文件?这样,如果您将company_banner的可见性设置为在xml中可见,它应该会起作用。我已经考虑过了,所以我尝试在这个布局文件中将其设置为可见,但仍然不起作用。对于这种布局,如果您在java中创建布局programmaticaly会更好。这样,你可以给出两个布局,并使用免费或付费等条件进行管理。这似乎不起作用。我认为问题在于,作为一个地图片段,内容可以是它所需要的大小,并且会占用任何可用空间。我不太擅长理解布局是如何工作的,但我怀疑大小需要由布局的其余部分控制。这很好。我很久以前就尝试过使用RelativeLayout,但在正确显示内容时总是遇到问题。现在我更了解它的工作原理了。不,我不需要使用单独的布局。我只是采用了您在这里给出的基本布局,并在我的java代码中保留了相同的逻辑,它可以完美地工作。谢谢
<TextView
android:id="@+id/advertisement"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_gravity="center_horizontal"
android:text="Advertisement placeholder"
android:visibility="visible" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/company_banner"
android:layout_below="@id/advertisement" >
<LinearLayout
android:id="@+id/map_fragment_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
<LinearLayout
android:id="@+id/map_screen_button_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00000000"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:paddingBottom="22dp"
android:visibility="visible" >
<Button
android:id="@+id/main_button_normal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:drawableLeft="@drawable/menu_callback_request"
android:onClick="callbackRequest" />
<Button
android:id="@+id/main_button_emergency"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:drawableLeft="@drawable/menu_emergency_request"
android:onClick="emergencyCallbackRequest" />
</LinearLayout>
</FrameLayout>
<TextView
android:id="@+id/company_banner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="center_horizontal"
android:text="Company Banner Placeholder"
android:visibility="visible" />