Android の RecyclerView アイテムの画面幅のパーセント 質問する

Android の RecyclerView アイテムの画面幅のパーセント 質問する

RecyclerView のアイテムの高さを、たとえば画面の高さの 30% にするにはどうすればよいでしょうか?

ConstraintLayout や PercentFrameLayout/PercentRelativeLayout を単純に使用することはできません。これらは子レイアウトを親レイアウトに対して相対的に配置するため、サイズが画面と一致しない可能性があります。

できれば、これを純粋な XML で実行したいと思います (画面の高さを動的に取得するために Runnable を使用する必要はありません)。

編集

明確に言うと、多くのソリューションでは RecyclerView の高さを制限することを提案していますが、それは意図したことではありません。RecyclerView は画面に表示する必要があります。ここでは、画面の幅 (高さではなく) について説明しています。

ここに画像の説明を入力してください

そのアイデアはカードの幅を画面の幅の33%にするRecyclerView が画面を水平方向にスクロールしても、その幅は変更されません。

ベストアンサー1

特定のサイズを強制するためLayoutManagerに使用するメソッドの 1 つをオーバーライドできます。RecyclerView

recyclerView.setLayoutManager(new LinearLayoutManager(this){
    @Override
    public boolean checkLayoutParams(RecyclerView.LayoutParams lp) {
        // force height of viewHolder here, this will override layout_height from xml
        lp.height = getHeight() / 3;
        return true;
    }
});

これは、RecyclerView画面に収まることを前提としています。

より複雑なソリューション(アイテムごとの制御とXMLからのパーセントインフレーションを備えたカスタムレイアウトマネージャー)が必要な場合は、この答え

おすすめ記事