我正在开发一款有付费和免费版本的应用。两个版本都显示一个地图,可以是谷歌地图或目前的OSM派生地图,我通过为每个地图加载不同的地图片段来处理它们之间的切换。还有两个按钮需要始终显示。在Honeycomb以及之后,我可以通过在分割操作栏中执行这些按钮操作来处理此问题,但出于向后兼容性原因,如果Android版本早于Honeycomb,我还使用框架布局使这些按钮显示在地图顶部。
在付费版本中,地图将占用所有可用的屏幕空间。问题是,对于免费版本,我需要在顶部有一个广告横幅,并在底部连接到我公司网站的图像,其间有地图片段。我目前正在使用TextView作为占位符,我可以在顶部显示一个,但从不在底部。
这是我的布局文件:
<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中的显示方式?
答案 0 :(得分:1)
尝试免费版本的此布局文件。
<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" />
答案 1 :(得分:-1)
您已在FrameLayout上设置android:layout_height="fill_parent"
。将其更改为wrap_content
并尝试。