gpt4 book ai didi

android - 使用 .xml 文件以编程方式生成相同的布局

转载 作者:搜寻专家 更新时间:2023-11-01 09:19:24 28 4
gpt4 key购买 nike

我的 xml 文件中有一个 gridLayout 填充了一些 ImageView ,我想以编程方式创建 gridlayout 的副本

.xml文件

<GridLayout
android:id="@+id/gridLayoutBucket"
android:layout_width="0dp"
android:layout_height="0dp"
android:columnCount="3"
android:padding="24dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="24dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/textTimerBucket"
app:layout_constraintBottom_toTopOf="@id/gridLayoutBucketBucket"
android:rowCount="2">

<ImageView
android:id="@+id/imageView1Bucket"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_rowWeight="1"
android:layout_columnWeight="1"
android:contentDescription="@string/imageDesc"
android:layout_margin="4dp" />

<ImageView
android:id="@+id/imageView2Bucket"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_rowWeight="1"
android:layout_columnWeight="1"
android:contentDescription="@string/imageDesc"
android:layout_margin="4dp" />

<ImageView
android:id="@+id/imageView3Bucket"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_rowWeight="1"
android:layout_columnWeight="1"
android:contentDescription="@string/imageDesc"
android:layout_margin="4dp" />

<ImageView
android:id="@+id/imageView4Bucket"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_rowWeight="1"
android:layout_columnWeight="1"
android:contentDescription="@string/imageDesc"
android:layout_margin="4dp" />

<ImageView
android:id="@+id/imageView5Bucket"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_rowWeight="1"
android:layout_columnWeight="1"
android:contentDescription="@string/imageDesc"
android:layout_margin="4dp" />

<ImageView
android:id="@+id/imageView6Bucket"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_rowWeight="1"
android:layout_columnWeight="1"
android:contentDescription="@string/imageDesc"
android:layout_margin="4dp" />


</GridLayout>

我尝试重新创建 gridLayout,它真的很接近,但是第二条车道裁剪了我的 imageview 的一些空间我创建一个 gridLayout 然后设置适当的行和列,此外我创建一个 rowSpec 和一个 colSpec 然后我用 ImageView 填充我的 gridlayout 给他们一些 layoutparams 像 width height , rowSpec 和 ColSpec

        GridLayout gridLayout = (GridLayout) findViewById(R.id.gridLayoutBucket);
gridLayout.removeAllViews();
gridLayout.setColumnCount(3);
gridLayout.setRowCount(2);


int idsetter = 0;

for(int i=0; i<gridLayout.getRowCount(); i++)
{
GridLayout.Spec rowSpec = GridLayout.spec(i, 1,GridLayout.FILL,1);

for(int j=0;j<gridLayout.getColumnCount();j++)
{
GridLayout.Spec colSpec = GridLayout.spec(j,1,GridLayout.FILL,1);

ImageView imageView = new ImageView(this);
imageView.setId(idsetter);
GridLayout.LayoutParams myGLP = new GridLayout.LayoutParams();
// myGLP.rowSpec = rowSpec;
// myGLP.columnSpec = colSpec;
GridLayout.LayoutParams layoutParams = new GridLayout.LayoutParams();
layoutParams.width = 0;
layoutParams.height = 0;
layoutParams.rowSpec = rowSpec;
layoutParams.columnSpec = colSpec;
imageView.setLayoutParams(layoutParams);
gridLayout.addView(imageView, myGLP );

}
}

最佳答案

您的问题在于 XML 格式,尤其是网格上的 GridLayout padding。通过分配 android:layout_width="0dp" android:layout_height="0dp",我假设您在具有这些宽度和高度的同一 XML 上有另一个 View 。通过这样做,你告诉这 2 个 View 共享剩下的屏幕。现在可以了,但是通过在 GridLayout 上也放置填充,您正在使 View “拉伸(stretch)”到每个方向 24dp,从而使另一个 View 与 GridLayout 重叠,从而导致您在第二个中描述的裁剪排。尝试删除 GridLayout 上的 padding,我想你会被设置的。

关于android - 使用 .xml 文件以编程方式生成相同的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57763798/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com