Android раскладка, как указать порядок элементов перед вызовом addView - PullRequest
0 голосов
/ 28 февраля 2011

Я использую AdWhirl, чтобы разместить рекламу в своем бесплатном приложении. Я хочу, чтобы объявление отображалось ниже MapView и выше ListView. Независимо от того, что я пытаюсь, я не могу заставить объявление появляться где-либо, кроме нижней части. В настоящее время listView завышен в XML, но AdWhirlView должен быть создан в коде Java. Так как я вызываю addView (adWhirlView) для LinearLayout с вертикальной ориентацией, объявление всегда появляется внизу. Как я могу определить, где должно быть размещено объявление?

Вот мой XML:

<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_main"
            >  
            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="0px"
                android:layout_weight="1">            


            <com.google.android.maps.MapView
                ....

       </RelativeLayout>                 


            <ListView
            android:id="@+id/listView"          
            android:layout_width="fill_parent"
            android:layout_height="0px" 
            android:layout_weight="1"/>


</LinearLayout>

1 Ответ

0 голосов
/ 28 февраля 2011

Попробуйте код ниже

<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_main"
        >  
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="0px"
            android:layout_weight="1">            


        <com.google.android.maps.MapView
            ....

   </RelativeLayout>                 

    <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:id="@+id/layout_ad"
    android:layout_height="wrap_content" />
        <ListView
        android:id="@+id/listView"          
        android:layout_width="fill_parent"
        android:layout_height="0px" 
        android:layout_weight="1"/>
</LinearLayout>

, а затем используйте следующий код

AdManager.setTestDevices(new String[] { AdManager.TEST_EMULATOR });
LinearLayout layout = (LinearLayout) findViewById(R.id.layout_ad);
AdWhirlLayout adWhirlLayout = new AdWhirlLayout(this, "Key");
Display d = this.getWindowManager().getDefaultDisplay();
RelativeLayout.LayoutParams adWhirlLayoutParams = new   RelativeLayout.LayoutParams(d.getWidth(), 52);
layout.addView(adWhirlLayout, adWhirlLayoutParams);
layout.invalidate();

Таким образом, ваш список будет всегда отображаться после AdWhirl, и если нет объявлений для показа, тогда список будет отображаться сразу после карты

...