我是一个有用的助手,可以翻译文本。
我使用带有动态芯片的芯片组。我希望芯片根据它们的文本自动换行。但即使没有填充,它也会占用额外的空间。
以下是我的代码:
xml:
这是动态添加芯片的方法:
方法px2dp的作用是:
我的 `build.gradle` 文件有以下依赖项:
这是我看到的内容:
我使用带有动态芯片的芯片组。我希望芯片根据它们的文本自动换行。但即使没有填充,它也会占用额外的空间。
以下是我的代码:
xml:
<com.google.android.material.chip.ChipGroup
android:id="@+id/cg"
android:layout_width="0dp"
android:layout_weight="75"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginBottom="5dp"
android:textColor="@android:color/black"
android:textStyle="bold"
android:textSize="12sp"
app:singleSelection="false"
app:chipSpacingVertical="5dp"
app:chipSpacingHorizontal="5dp"
app:singleLine="false"
app:chipSpacing="2dp">
这是动态添加芯片的方法:
for(int i=0;i<cartoonTypes.length;i++){
chip = new Chip(this);
chip.setText(cartoonTypes[i].trim());
chip.setTextColor(Color.WHITE);
chip.setChipBackgroundColor(getResources().getColorStateList(R.color.colorChip));
chip.setTextSize(12);
chip.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
chip.setPadding(0,0,0,0);
cgMovieGenre.addView(chip);
ChipGroup.LayoutParams layoutParams = (ChipGroup.LayoutParams) chip.getLayoutParams();;
int dpSize = px2dp(12);;
layoutParams.height = dpSize;
layoutParams.width = ChipGroup.LayoutParams.WRAP_CONTENT;
chip.setLayoutParams(layoutParams);
}
方法px2dp的作用是:
int px2dp(int px){
metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int h = (px * metrics.densityDpi) / DisplayMetrics.DENSITY_DEFAULT;
return h;
}
我的 `build.gradle` 文件有以下依赖项:
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
implementation 'androidx.cardview:cardview:1.0.0-beta01'
implementation 'com.google.android.material:material:1.0.0-beta01'
这是我看到的内容:
我想让芯片根据其文本使用尽可能少的宽度。