2011-12-22 69 views
2

我是剛剛接觸android開發(v 4.0,API 14)並堅持實施方向更改。調整方向變化的意見

我已經添加了以下行清單文件 android:configChanges="orientation|keyboardHidden|screenSize">

但它看起來像screenSize參數沒有工作,所以我不得不手工編寫這兩種方法:

public void ChangetoLandscape() { 
    ed.setTranslationX(300.0f); 
    btnindex.setTranslationX(300.0f); 
    btngainer.setTranslationX(300.0f); 
    btnloser.setTranslationX(300.0f); 
    lsym.setTranslationX(200.0f); 
    ltable.setTranslationX(300.0f); 
    tv1.setTranslationX(290.0f); 
    tv2.setTranslationX(300.0f); 
    tv4.setTranslationX(300.0f); 

    mySimpleXYPlot.setScaleX(3.0f); 
    mySimpleXYPlot.setScaleY(0.8f); 
    mySimpleXYPlot.setPlotMarginLeft(50.0f); 
    mySimpleXYPlot.setTranslationX(60.0f); 
    mySimpleXYPlot.setTranslationY(-70.0f); 

    sv1.setTranslationY(-80.0f); 
} 

public void ChangetoPortrait() { 

//NOTE THAT IF I DON'T WRITE BELOW CODE, 
//SWITCHING TO PORTRAIT MODE AFTER LANDSCAPE MODE RUINS THE WHOLE LAYOUT. 
     ed.setTranslationX(-1.0f); 
     btnindex.setTranslationX(-1.0f); 
     btngainer.setTranslationX(-1.0f); 
     btnloser.setTranslationX(-1.0f); 
     lsym.setTranslationX(-1.0f); 
     ltable.setTranslationX(-1.0f); 
     tv1.setTranslationX(-1.0f); 
     tv2.setTranslationX(-1.0f); 
     tv4.setTranslationX(-1.0f); 
     mySimpleXYPlot.setScaleX(1.0f); 
     mySimpleXYPlot.setScaleY(1.0f); 
     mySimpleXYPlot.setPlotMarginLeft(1.0f); 
     mySimpleXYPlot.setTranslationX(-1.0f); 
     mySimpleXYPlot.setTranslationY(-1.0f); 

     sv1.setTranslationY(-1.0f); 
} 

我使用RelativeLayout,所以我必須手動將每個視圖轉換到方向更改上的指定位置。

main.xml中

<RelativeLayout android:layout_width="match_parent" 
android:layout_height="match_parent" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:id="@+id/MainLayout">" 
<EditText 
    android:id="@+id/txt1" 
    android:layout_width="100dp" 
    android:layout_height="wrap_content" 
    android:hint="Search" 
    android:layout_marginLeft="220dp" 
    android:selectAllOnFocus="true" 
    android:cursorVisible="false" > 
</EditText> 

<Button 
    android:id="@+id/btnindex" 
    android:layout_width="60dp" 
    android:layout_height="wrap_content" 
    android:text="Index" 
    android:layout_marginLeft="140dp" 
    android:layout_below="@id/txt1" 
    android:textSize="12dp"/> 

<Button 
    android:id="@+id/btngainer" 
    android:layout_width="60dp" 
    android:layout_height="wrap_content" 
    android:text="Gainer" 
    android:layout_below="@id/txt1" 
    android:layout_toRightOf="@id/btnindex" 
    android:textSize="12dp"/> 

<Button 
    android:id="@+id/btnloser" 
    android:layout_width="60dp" 
    android:layout_height="wrap_content" 
    android:text="Loser" 
    android:layout_below="@id/txt1" 
    android:layout_toRightOf="@id/btngainer" 
    android:textSize="12dp"/> 

<TextView 
    android:id="@+id/tv1" 
    android:layout_width="75dp" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="150dp" 
    android:layout_marginTop="100dp" 
    android:textStyle="bold" 
    android:gravity="center" 
    android:textSize="10dp" 
    android:textColor="#00ff00" 
    android:text="SYMBOL"/> <!-- 2 similar textviews --> 

<ListView 
     android:id="@+id/ltable" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="150dp" 
     android:layout_marginTop="70dp" 
     android:layout_alignParentRight="true" 
     android:layout_width="match_parent" 
     android:layout_below="@id/txt1"> 
</ListView> 

<com.androidplot.xy.XYPlot 
android:id="@+id/mySimpleXYPlot" 
android:layout_width="140dp" 
android:layout_height="200dp" 
android:layout_alignTop="@+id/btnindex" 
title="Index"/> 

<ScrollView android:id="@+id/sv1" 
android:layout_width="300dp" 
android:layout_height="100dp" 
android:layout_marginTop="250dp"> 

<LinearLayout android:id="@+id/LinearLayout02" 
android:layout_width="wrap_content" 
android:layout_height="100dp" 
android:orientation="vertical"> 

<TextView android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/tv1" 
android:text="Scrollview Item 1"/> <!-- 5 similar textviews --> 
</LinearLayout> 
</ScrollView> 

</RelativeLayout> 

  1. 但作爲顯示在下面的截圖,在橫向模式下,這是使用android plot繪製了沒有得到正確顯示的圖表。這背後的原因是我用setScaleX()方法bcoz setWidth()不可用。我不想讓圖表看起來很緊張。相反,它的寬度應該增加。

  2. ScrollView在portrait mode中正常顯示,但在landscape mode中,根據它的高度是100dp,它不是可見的。

ScreenShot


編輯:改變android:configChanges="orientation|keyboardHidden|screenSize"android:configChanges="orientation|screenSize", 後,我得到這個當我切換到橫向模式:

ScreenShot

+1

這裏有幾個驚人的東西。 當你說「screenSize參數不工作」時,你是什麼意思?你重寫OnConfigChanged()並從onConfigChanged()調用這些方法嗎?如果你是,這正是應該發生的。其次,你似乎更像是使用AbsoluteLayout來使用RelativeLayout。我強烈建議你閱讀RelativeLayout教程。如果正確實施,你不必做任何翻譯。一切都應該照顧。 – 2011-12-22 08:56:01

+0

繼續.. 第三,它看起來像你正在尋找potrait和風景模式的不同佈局。如果這是真的,你應該考慮使用layout-land和layout-potrait。 – 2011-12-22 08:56:49

+0

@VikramBodicherla 1)我重寫onConfigChanged(),但我調用了'ChangetoLandscape()'和'ChangetoPortrait()'方法。 **沒有任何**與screenSize相關。 2.)你能簡單地解釋一下,我在用** RelativeLayout **做**錯誤**。 3)我嘗試使用'layout-land'和'layout-potrait',但它**重新創建**活動,這正是我**不**想要的。 – GAMA 2011-12-22 09:30:53

回答

1

使用LayoutParams放置圖在適當的位置而不是scale()功能。