Ale*_*lex 3 android android-gridlayout
Android Studio 3.1、Java 1.8、Gradle 4.1
我使用 GridLayout。一切正常。但我需要在列之间和行之间设置空间(例如 10dp)。我怎么能做到这一点?
主文件:
<GridLayout
android:id="@+id/categoriesContainer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:verticalSpacing="10dp"
app:layout_constraintEnd_toEndOf="@+id/birthDateContainer"
app:layout_constraintStart_toStartOf="@+id/birthDateContainer"
app:layout_constraintTop_toBottomOf="@+id/birthDateContainer">
</GridLayout>
Run Code Online (Sandbox Code Playgroud)
profile_category_active.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<android.support.constraint.ConstraintLayout
android:id="@+id/profileCategoryContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/categoryNameTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginEnd="30dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="30dp"
android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
android:ellipsize="end"
android:maxLines="1"
android:text="TextView" />
</android.support.constraint.ConstraintLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
活动:我以编程方式添加行:
GridLayout gridLayout = findViewById(R.id.categoriesContainer);
gridLayout.setColumnCount(columnCount);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int index = 0; index < 10; index++) {
View profileCategoryActive = inflater.inflate(R.layout.profile_category_active, null, false);
categoriesGridContainer.addView(profileCategoryActive);
ConstraintLayout profileCategoryContainer = profileCategoryActive.findViewById(R.id.profileCategoryContainer);
ViewGroup.LayoutParams profileCategoryContaineParams = profileCategoryContainer.getLayoutParams();
profileCategoryContaineParams.width = (int) AndroidUtil.dpToPx(this, categoryItemWidth);
profileCategoryContainer.setLayoutParams(profileCategoryContaineParams);
TextView categoryNameTextView = profileCategoryActive.findViewById(R.id.categoryNameTextView);
categoryNameTextView.setText("Ind " + profileCategoryContaineParams.width);
}
Run Code Online (Sandbox Code Playgroud)
Bor*_*off 11
在 xml GridLayout 中,添加:
android:useDefaultMargins="true"
Run Code Online (Sandbox Code Playgroud)
你会得到列和行之间的距离。
Ale*_*lex -1
我找到了解决方案:
Ø 活动:
View profileCategoryActive = inflater.inflate(R.layout.profile_category_active, null, false);
categoriesGridContainer.addView(profileCategoryActive);
// set ndroid:layout_columnWeight="1" programatically
GridLayout.LayoutParams params = new GridLayout.LayoutParams(GridLayout.spec(
GridLayout.UNDEFINED, GridLayout.FILL, 1f),
GridLayout.spec(GridLayout.UNDEFINED, GridLayout.FILL, 1f));
params.width = (int) AndroidUtil.dpToPx(this, categoryItemWidth);
params.bottomMargin = (int) tilePreviewLeftRightMarginDp;
params.topMargin = (int) tilePreviewLeftRightMarginDp;
params.rightMargin = (int) tilePreviewLeftRightMarginDp;
params.leftMargin = (int) tilePreviewLeftRightMarginDp;
ConstraintLayout profileCategoryContainer = profileCategoryActive.findViewById(R.id.profileCategoryContainer);
profileCategoryContainer.setLayoutParams(params);
TextView categoryNameTextView = profileCategoryActive.findViewById(R.id.categoryNameTextView);
categoryNameTextView.setText("Ind " + params.width);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16944 次 |
| 最近记录: |