2016-03-02 30 views
2

在myfragment.java變化方向不會炒鍋中com.android.support:design:23.2.0

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); 
    StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); 
    if (isScreenChange()) { 
     recyclerView.setLayoutManager(staggeredGridLayoutManager); 
    } else { 
     recyclerView.setLayoutManager(linearLayoutManager); 
    } 
} 

public boolean isScreenChange() { 
    Configuration mConfiguration = getResources().getConfiguration(); 
    Log.i("SCREEN",mConfiguration.toString()); 
    int ori = mConfiguration.orientation; 
    if (ori == Configuration.ORIENTATION_LANDSCAPE) { 
     return true; 
    } else if (ori == Configuration.ORIENTATION_PORTRAIT) { 

     return false; 
    } 
    return false; 
} 

它劑量編譯「com.android.support:design:23.1.1的工作, 但在com.android.support:design:23.2.0,whatever你旋轉屏幕, 它總是顯示ORIENTATION_PORTRAIT

+0

調用'compile'c​​om.android.support:design:23.1.0'' –

回答

0

支持庫23.2.0隨機帶有如下變化RecyclerView提到HERE

此版本爲LayoutManager API帶來了令人興奮的新功能: 自動測量!這允許RecyclerView根據其內容的大小自行調整其大小。這意味着以前不可用的 方案(例如,對於 RecyclerView的尺寸使用WRAP_CONTENT)現在成爲可能。你會發現所有內置的 佈局管理器現在支持自動測量。

由於此更改,請務必仔細檢查您的項目視圖的佈局參數:以前忽略的佈局參數(例如滾動方向上的 MATCH_PARENT)現在將得到充分的重視。

如果你有一個自定義的LayoutManager不延建在佈局管理的 之一,這是一個選擇的API - 你會被要求 呼叫setAutoMeasureEnabled(真),以及做一些細微的變化 在該方法的Javadoc中詳細說明。

請注意,雖然RecyclerView爲其子項設置了動畫,但它並不會 爲其自身的邊界更改設置動畫。如果您想在更改RecyclerView邊界時動畫 ,則可以使用Transition API。

+0

這不是關於新功能「自動測量」。 OP的擔心是Fragment的onConfigurationChanged()方法在屏幕方向更改期間未調用。對我來說,自定義視圖的onConfigurationChanged()不會被調用,但onConfigurationChanged()方法可以正常工作。 –

+0

@SankarV同樣在這裏..片段可以改變它的方向,但recyclerview不能。我想在垂直使用LinearLayoutManager,並在水平使用StaggerGridLayoutManager – meunicorn

+0

@meunicorn recyclerview問題發生在最新的支持庫V23.2.0。請使用先前版本v23.1.1。我認爲我們需要一個來自Google的新版本,並修復了這個bug。 –