如何在 GridLayout 中动态更改按钮样式(大小、边距)?
How to change button style(size, margin) dynamically in GridLayout?
每次按下“添加按钮”时,我都会向 GridLayout 动态添加一个按钮。 drawble应用正常,但是style属性没有应用。
所以我参考这个post写了代码,但是并没有按照我想要的方式运行。
所以我搜索的时候发现setTextAppearance只能通过text的相关属性来改变。有什么方法可以更改边距和大小吗?
并且我尝试了这种方法来以编程方式更改大小,但结果相同。
int size = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40, getResources().getDisplayMetrics());
button.setHeight(size);
button.setWidth(size);
我想知道如何动态更改按钮样式或如何将 GridLayout 中的所有单元格设置为相同大小。
我现在的代码
GridLayout gridLayout = (GridLayout) findViewById(R.id.gridLayout);
Button button = new Button(this);
button.setBackgroundResource(R.drawable.color_button_shape);
button.setTextAppearance(R.style.color_button);
GradientDrawable dynamicColor = (GradientDrawable) button.getBackground().getCurrent();
dynamicColor.setColor(Color.parseColor(name));
gridLayout.addView(button);
网格布局
<GridLayout
android:id="@+id/gridLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0">
</GridLayout>
drawble(color_button_shape)
<shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:shape="rectangle">
<corners
android:topLeftRadius="6dp"
android:topRightRadius="6dp"
android:bottomLeftRadius="6dp"
android:bottomRightRadius="6dp" />
</shape>
风格
<style name="color_button">
<item name="android:layout_width">40dp</item>
<item name="android:layout_height">40dp</item>
<item name="android:layout_marginStart">10dp</item>
<item name="android:layout_marginTop">9dp</item>
</style>
current state
I want(请忽略颜色,仅参考尺寸和边距。)
试试这个,它可能会解决 - 更改 Grid_layout 编码
<GridLayout
android:id="@+id/gridLayout"
android:layout_width="24dp"
android:layout_height="24dp"
android:padding="8dp"
android:columnCount="3"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0">
</GridLayout>
您可以像这样设置按钮的大小和边距:
Button button = new Button(this);
GridLayout.LayoutParams layoutParams=new GridLayout.LayoutParams();
layoutParams.setMargins(16,16,16,16);
layoutParams.width=size;
layoutParams.height=size;
button.setLayoutParams(layoutParams);
每次按下“添加按钮”时,我都会向 GridLayout 动态添加一个按钮。 drawble应用正常,但是style属性没有应用。
所以我参考这个post写了代码,但是并没有按照我想要的方式运行。
所以我搜索的时候发现setTextAppearance只能通过text的相关属性来改变。有什么方法可以更改边距和大小吗?
并且我尝试了这种方法来以编程方式更改大小,但结果相同。
int size = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40, getResources().getDisplayMetrics());
button.setHeight(size);
button.setWidth(size);
我想知道如何动态更改按钮样式或如何将 GridLayout 中的所有单元格设置为相同大小。
我现在的代码
GridLayout gridLayout = (GridLayout) findViewById(R.id.gridLayout);
Button button = new Button(this);
button.setBackgroundResource(R.drawable.color_button_shape);
button.setTextAppearance(R.style.color_button);
GradientDrawable dynamicColor = (GradientDrawable) button.getBackground().getCurrent();
dynamicColor.setColor(Color.parseColor(name));
gridLayout.addView(button);
网格布局
<GridLayout
android:id="@+id/gridLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0">
</GridLayout>
drawble(color_button_shape)
<shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:shape="rectangle">
<corners
android:topLeftRadius="6dp"
android:topRightRadius="6dp"
android:bottomLeftRadius="6dp"
android:bottomRightRadius="6dp" />
</shape>
风格
<style name="color_button">
<item name="android:layout_width">40dp</item>
<item name="android:layout_height">40dp</item>
<item name="android:layout_marginStart">10dp</item>
<item name="android:layout_marginTop">9dp</item>
</style>
current state
I want(请忽略颜色,仅参考尺寸和边距。)
试试这个,它可能会解决 - 更改 Grid_layout 编码
<GridLayout
android:id="@+id/gridLayout"
android:layout_width="24dp"
android:layout_height="24dp"
android:padding="8dp"
android:columnCount="3"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0">
</GridLayout>
您可以像这样设置按钮的大小和边距:
Button button = new Button(this);
GridLayout.LayoutParams layoutParams=new GridLayout.LayoutParams();
layoutParams.setMargins(16,16,16,16);
layoutParams.width=size;
layoutParams.height=size;
button.setLayoutParams(layoutParams);