2014-03-01 63 views
1

在我的android應用程序中,我有一個包含不同計算器的微調器,當選擇一個計算器時,它會顯示在下面的滾動視圖中。當屏幕設置爲水平時,佈局會發生變化,以便滾動視圖位於右側,並且微調器位於左側,並且它們的工作方式都是相同的。基於屏幕方向在微調器和列表視圖之間切換

但是,當屏幕處於水平位置時,listview看起來會更好,但我似乎無法找到在java代碼中進行切換的方法。

任何人都可以幫忙嗎?

這裏是初始化方法的代碼,我想知道是否有一種方法來插入一個if語句,如果屏幕是垂直的,初始化一個微調器,如果屏幕是水平。

private void initialize() { 

    valg_vertical = (Spinner) findViewById(R.id.sKalk); 

    // Adds the custom look for the spinner 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      R.layout.custom_spinner, getResources().getStringArray(
        R.array.calculator)); 
    adapter.setDropDownViewResource(SpinnerItemLayout); 
    valg_vertical.setAdapter(adapter); 
    // Adds the custom look for the spinner 

    lLayout = (LinearLayout) findViewById(R.id.lInSVKalk); 
    valg_vertical.setOnItemSelectedListener(this); 
} 

回答

2

你有2個可能的解決方案:

  1. portraitlandscape模式創建不同的佈局(他們將分別在layoutlayout-land文件夾的地方)。
  2. 在佈局中創建容器(例如,FrameLayout)。並根據方向在運行時添加相應的視圖。

總之,因爲這兩個方向使用不同的元素,在你的代碼,你應該添加以下if聲明:

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){ 

} else { 

} 
+0

非常感謝你,這是完美的! 我已經提出了不同的意見,但現在我看不到我怎麼能在運行時切換它們。 – jangerhard

+0

@jangerhard很好,我認爲根本原因是'NPE'?如果是這樣,你應該根據方向找到你的看法 – nikis

+0

我想通了!我沒有更改不同組件的ID,現在它完美的工作!再次感謝! – jangerhard