4

我有一个片段的活动。在片段之上,我想放置一个小广告。问题是,如果我在片段顶部定义任何内容,片段中的文本将出现剪切。查看图像(显示广告之前和之后)。

之前:正常图像 之后:有问题的图像 注意滚动条,它在顶部,这意味着它正在削减我的按钮的可见性。

我想要的只是在广告可见时保持文本“Jogar”可见。如有必要,这里有一些 xml 和代码可以提供帮助。如果您有任何解决方法的想法,请帮助我。

活动_xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00F">
    <com.google.ads.AdView android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        ads:adUnitId="..."
        ads:adSize="BANNER"
        ads:testDevices="TEST_EMULATOR"
        android:background="@android:color/transparent"
        ads:loadAdOnCreate="true" />
    <FrameLayout android:id="@+id/fragmentPlaceholder"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#0F0"/>
</LinearLayout>

片段_xml:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center">
        <Button android:id="@+id/playButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="10dp"
            android:text="@string/play"
            style="@style/TextFont"/>
        <Button android:id="@+id/rankButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/rank"
            style="@style/TextFont"/>
        <Button android:id="@+id/achievementsButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/achievements"
            style="@style/TextFont" />
        <Button android:id="@+id/settingsButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/settings"
            style="@style/TextFont"/>
        <com.google.android.gms.common.SignInButton
            android:id="@+id/sign_in_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <Button android:id="@+id/sign_out_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:textColor="@android:color/black"
            android:background="@android:drawable/btn_default"
            android:text="@string/logout"
            android:visibility="gone" />
    </LinearLayout>
</ScrollView>

在 Fragment 类中,我膨胀了视图调用:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.menu_initial, container, false);
    ...

在 Activity 类中,我使用以下命令调用片段:

fm = getSupportFragmentManager();
if(fm.getBackStackEntryCount() == 0){
    initialMenu = new InitialMenu();
    fm.beginTransaction().replace(R.id.fragmentPlaceholder, initialMenu, "initialFrag").commit();
}
4

3 回答 3

3

尝试从片段布局中由 包裹的android:layout_gravity="center"属性中删除:LinearLayoutScrollView

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"     
        android:gravity="center">
//...

该属性没有意义,因为您告诉 将Linearlayout自身置于父级中,从而为其提供所需/想要的尽可能多的空间(并且出于某些原因,使用该属性似乎可以抵消 .. 的内容ScrollView)。

于 2013-06-13T21:27:43.670 回答
0

考虑这个解决方案 - 使用 RelativeLayout 而不是线性并将片段放置在 adView 下方:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00F">

    <com.google.ads.AdView android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        ads:adUnitId="a151a1ce3f32101"
        ads:adSize="BANNER"
        ads:testDevices="TEST_EMULATOR, CF4058453805477305A64DACC4D23425"
        android:background="@android:color/transparent"
        ads:loadAdOnCreate="true" />

    <FrameLayout android:id="@+id/fragmentPlaceholder"
        android:layout_width="match_parent"
        android:layout_height="match_parent"            
        anroid:layout_below="@+id/adView"
        android:background="#0F0"/>
</RelativeLayout>
于 2013-06-10T21:13:23.857 回答
0

您的问题是,您FrameLayout将高度设置为,match_parent因此它将与设备的高度匹配,从而落后于您的AdView. 尝试将其切换为wrap_content

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00F">
    <com.google.ads.AdView android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        ads:adUnitId="..."
        ads:adSize="BANNER"
        ads:testDevices="TEST_EMULATOR"
        android:background="@android:color/transparent"
        ads:loadAdOnCreate="true" />
    <FrameLayout android:id="@+id/fragmentPlaceholder"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#0F0"/>
</LinearLayout>
于 2013-06-13T17:58:19.993 回答