2017-06-28 13 views
0

Windowsタイルが好きな方法を探して、ダッシュボードとして知られているソリューションを探していました。私はCardViewでRecyclerViewを使いたい。私は昔の解決策を見つけたが、のLinearLayoutはボタンでも使用:How to create layout with 6 buttons like windows tilesダッシュボードまたはWindowsタイルのようなCardViewを使用したRecyclerView

私はこの時点で持っているもの: enter image description here

私が欲しいもの: enter image description here

私は6 CardViewsを持って、彼らは全体の面積を占有しなければなりません親RelativeLayoutのサイズで、画面の幅に関係なく同じサイズになります。

ポートレートモードでは、私は2列と横3列です。

recyclerView.setHasFixedSize(true); 
     int columns = resources.getConfiguration() 
       .orientation == Configuration.ORIENTATION_LANDSCAPE ? 3 : 2; 

     RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getApplicationContext(), columns); 
     recyclerView.addItemDecoration(new GridSpacingItemDecoration(columns, 
       Utils.dpToPx(resources, 3), true)); 
     recyclerView.setItemAnimator(new DefaultItemAnimator()); 
     recyclerView.setLayoutManager(mLayoutManager); 

どうすればいいですか?

答えて

0

いつものように、私はここに質問を書いた後、しばらくして解決策が出てくる。ここで私はあなたのRecyclerViewアダプタでこの

を解決する方法は次のとおりです。

@Override 
public HomeTilesAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.home_tile_item, parent, false); 
    int h = parent.getHeight(); 
    // margin - activity_vertical_margin 
    // rows - number of rows in diffrent display modes 
    h = (h - Math.round(margin*2))/rows; 

    RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) itemView.getLayoutParams(); 
    params.height = h; 
    itemView.setLayoutParams(params); 

    return new MyViewHolder(itemView); 
} 

この決定は、問題を解決し、その過程で、私は別の問題に直面しました。タブレットのアイコンは非常に小さく見えますが、美しく見えません。どのように私はあなたがこの記事を読むことができ、この問題を解決:ImageView size for phones and tablets

結果

enter image description here

関連する問題