2012-01-22 166 views
0

我有一個應用程序,我想添加一個免費版本的廣告,但我想對我的代碼做最小的更改。所以在我的佈局我這樣做:Android,RelativeLayout和動態添加元素

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout android:id="@+id/mainLayout" 
android:layout_width="fill_parent" android:layout_height="0dip" 
android:orientation="vertical" 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"> 

<FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/adFrameLayout" android:background="@android:color/white"> 

</FrameLayout> 
<LinearLayout android:id="@+id/buttonGrp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" 
    android:layout_below="@id/adFrameLayout" android:orientation="horizontal"> 
    <Button android:id="@+id/normalGameBtn" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:text="@string/normalGame"/> 
    <Button android:id="@+id/shareBtn" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:text="@string/shareButton"/> 
</LinearLayout> 

<RadioGroup android:id="@+id/aiRadioGrp" android:layout_below="@id/buttonGrp" 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:checkedButton="@+id/normalAI" android:layout_gravity="center_horizontal"> 
    ... 
</RadioGroup> 
<ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/aiRadioGrp"> 
    <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" 
     android:text="@string/description" android:textSize="16dip" 
     /> 
</ScrollView> 

所以,我想的是,FrameLayout裏(adFrameLayout)這是在我想它顯示廣告,如果它是免費的版本,如果支付的頂部那麼大小應該停留在0.

因此,在基本(專業)代碼中,我使用Guice注入一個對象,它在onCreate中做了額外的處理。在專業版的代碼什麼也不做,在免費版本,我這樣做:

@Override 
public void accept(Activity activity) { 
    FrameLayout frame = (FrameLayout) activity.findViewById(R.id.adFrameLayout); 
    frame.getLayoutParams().height = 20; 
    frame.invalidate(); 
} 

這只是爲了確保它的工作,它沒有一個例子,FrameLayout裏保持在一個大小爲0 。我怎樣才能讓它在代碼中動態調整大小?當然,如果我在xml中指定了20px,它可以正常工作,但我猜想在付費版本中,我試圖將大小設置爲0也不起作用。我究竟做錯了什麼?

BTW我設置的大小之後我做的setContentView(R.id.main)

回答

0

Ugghh,這是一件與AndroidAnnotations處理。出於某種原因,它不會像onCreate方法中那樣選擇佈局更改,我必須將其置於postOnCreate方法中。這可能是在某處發生的,但我錯過了它。進行