布局问题-无法将视图显示在框架布局下方



我正在开发一款有付费和免费版本的应用程序。这两个版本都显示了一个地图,目前可以是谷歌地图,也可以是OSM衍生的地图,我通过为每个版本加载不同的地图片段来处理它们之间的切换。还有两个按钮需要始终显示。在Honeycomb和更高版本上,我可以通过在拆分操作栏中进行这些按钮操作来处理这一问题,但出于向后兼容性的原因,如果Android版本早于Honeycombe,我也会使用框架布局使这些按钮出现在地图的顶部。

在付费版本中,地图会占用所有可用的屏幕空间。问题是,对于免费版本,我需要在顶部有一个广告横幅,在底部有一个链接到我公司网站的图像,中间有地图片段。我目前正在使用每个文本视图作为占位符,我可以显示顶部的文本视图,但不能显示底部的文本视图。

这是我的布局文件:

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

在我的MapScreen活动的onCreate()方法中,如果运行的版本是免费版本,我还会执行以下操作:

    TextView advertisement = (TextView) findViewById( R.id.advertisement );
TextView companyBanner = (TextView) findViewById( R.id.company_banner );
advertisement.setVisibility( View.VISIBLE );
companyBanner.setVisibility( View.VISIBLE );

如何更改此布局文件以使两个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_height="fill_parent"。将其更改为wrap_content并尝试。

最新更新