У меня есть LinearLayout, где я программно помещаю кнопки.В начале есть одна кнопка внутри, чтобы добавить новые кнопки фильтра.XML выглядит следующим образом:
<LinearLayout
android:id="@+id/filterContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/addFilterButton"
style="@style/iconButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="@drawable/ic_filter_list_icon_color" />
</LinearLayout>
Если нажать кнопку фильтра, можно добавить новые фильтры.В ViewGroup добавляются элементы LinearLayout, например:
private void addButtonForFilter(ResultFilter filter) {
MaterialButton newFilter = new MaterialButton(mFilterBoxViewGroup.getContext(),
null, R.attr.materialButtonStyle);
newFilter.setText(FilterStringProvider.getLabel(mFilterBoxViewGroup.getContext(), filter));
newFilter.setLayoutParams(mParameters);
newFilter.setOnClickListener(this);
newFilter.setTag(filter.getFilterType());
mFilterBoxViewGroup.addView(newFilter);
}
Здесь кнопки отображаются в стандартном дизайне материала.Теперь я хотел бы изменить его на определенный стиль.
<style name="textButton" parent="Widget.MaterialComponents.Button.TextButton">
<item name="backgroundTint">@color/colorActionbarTabs</item>
<item name="android:textColor">@color/itemColor</item>
<item name="android:textSize">@dimen/item_standard_text_size</item>
<item name="android:clipToPadding">false</item>
</style>
Если я изменю стиль в конструкторе кода выше, тогда кнопка не будет отображаться, как ожидалось:
MaterialButton newFilter = new MaterialButton(mFilterBoxViewGroup.getContext(),
null, R.style.textButton);
Кнопка теперь отображается без отступов, даже если новый стиль имеет MaterialButton в качестве родителя, и я не смог выяснить, что является причиной такого поведения.Есть идеи?