Android studio 将视图宽度设置为不带父布局的屏幕的百分比

Android studio 将视图宽度设置为不带父布局的屏幕的百分比,android-studio,android-layout,android-recyclerview,android-viewholder,Android Studio,Android Layout,Android Recyclerview,Android Viewholder,事实上,我有两个问题,但它们是相关的。我会尽量使它简洁 基本上,我希望我的视图(cardview视图)在布局中按照它们的大小进行良好的组织,就像下面所示的示例一样。(不要介意卡片的内容) 然后,我会为不同的视图持有者创建几个不同大小的布局。(平方2x2,平方1x1,平方3x2,…) 为此,我在mainActivity上创建了一个片段,其中包含自己的RecyclerView和一个StaggeredLayoutManager作为LayoutManager的参数,如下所示: mainFragment

事实上,我有两个问题,但它们是相关的。我会尽量使它简洁

基本上,我希望我的视图(cardview视图)在布局中按照它们的大小进行良好的组织,就像下面所示的示例一样。(不要介意卡片的内容)

然后,我会为不同的视图持有者创建几个不同大小的布局。(平方2x2,平方1x1,平方3x2,…)

为此,我在mainActivity上创建了一个片段,其中包含自己的RecyclerView和一个
StaggeredLayoutManager
作为
LayoutManager
的参数,如下所示:

mainFragment.java

[...]
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.main_fragment, container, false);
        
        //List of Views?
        ArrayList<ExampleItems> exampleItems = new ArrayList<>();
        
        //Fill the list
        setExampleItems(exampleItems);

        //RecyclerView Stuff
        RecyclerView recyclerView = view.findViewById(R.id.main_recyclerView);
        recyclerView.setHasFixedSize(true);
        RecyclerView.LayoutManager layoutManager;
        StaggeredGridLayoutManager staggeredGridLayout = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);
        staggeredGridLayout.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
        layoutManager = staggeredGridLayout;
        RecyclerView.Adapter<RecyclerView.ViewHolder> adapter = new MainRecyclerViewAdapter(exampleItems);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(adapter);
        return view;

    }
[...]
[…]
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater充气机,@null可查看组容器,
@可为空的捆绑包savedInstanceState){
视图=充气机。充气(R.layout.main_碎片,容器,假);
//视图列表?
ArrayList exampleItems=新建ArrayList();
//填写清单
setExampleItems(exampleItems);
//回收新东西
RecyclerView RecyclerView=view.findViewById(R.id.main\u RecyclerView);
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager LayoutManager;
StaggedGridLayoutManager StaggedGridLayout=新的StaggedGridLayoutManager(3,StaggedGridLayoutManager.VERTICAL);
staggeedgridlayout.setGapStrategy(staggeedgridlayoutmanager.GAP\u HANDLING\u NONE);
layoutManager=StaggedGridLayout;
RecyclerView.Adapter适配器=新的MainRecyclerViewAdapter(例如Items);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(适配器);
返回视图;
}
[...]
为了使我的视图排列整齐,它们的宽度必须是屏幕大小的一小部分。如果我想让我的三个视图很好地适应一行布局,那么它们的宽度都必须是屏幕大小的1/3(没有边距)

这就是问题所在。从今天起,您需要使用
layout\u weight=33%
来实现这一点。这意味着您需要使用
线性布局
作为视图的父视图。但是,如果我这样做,那么我的viewholder的宽度与屏幕大小相同,我不能在它旁边放置另一个视图(下一个视图需要在下面)

所以我只剩下这个:

这看起来和我想要达到的目标完全不一样(第一张照片),而且这似乎不是最实际的方法

以下是我的问题:

  • 对于这种想法,
    交错布局
    是最佳布局选项吗?我读过有关AsymetricLayout的
    文章,但不太了解如何实现它。
  • 如果
    StaggeredLayout
    是最佳选择,我是否使用了最佳方法(根据屏幕大小估计每个视图的宽度)?
  • 感谢您的帮助。事先非常感谢