我是剛剛接觸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>
。
但作爲顯示在下面的截圖,在橫向模式下,這是使用
android plot
繪製了沒有得到正確顯示的圖表。這背後的原因是我用setScaleX()
方法bcozsetWidth()
不可用。我不想讓圖表看起來很緊張。相反,它的寬度應該增加。ScrollView在
portrait mode
中正常顯示,但在landscape mode
中,根據它的高度是100dp,它不是可見的。
編輯:改變android:configChanges="orientation|keyboardHidden|screenSize"
到 android:configChanges="orientation|screenSize"
, 後,我得到這個當我切換到橫向模式:
這裏有幾個驚人的東西。 當你說「screenSize參數不工作」時,你是什麼意思?你重寫OnConfigChanged()並從onConfigChanged()調用這些方法嗎?如果你是,這正是應該發生的。其次,你似乎更像是使用AbsoluteLayout來使用RelativeLayout。我強烈建議你閱讀RelativeLayout教程。如果正確實施,你不必做任何翻譯。一切都應該照顧。 – 2011-12-22 08:56:01
繼續.. 第三,它看起來像你正在尋找potrait和風景模式的不同佈局。如果這是真的,你應該考慮使用layout-land和layout-potrait。 – 2011-12-22 08:56:49
@VikramBodicherla 1)我重寫onConfigChanged(),但我調用了'ChangetoLandscape()'和'ChangetoPortrait()'方法。 **沒有任何**與screenSize相關。 2.)你能簡單地解釋一下,我在用** RelativeLayout **做**錯誤**。 3)我嘗試使用'layout-land'和'layout-potrait',但它**重新創建**活動,這正是我**不**想要的。 – GAMA 2011-12-22 09:30:53