gpt4 book ai didi

android - 以编程方式更改 Drawable 的背景,保持圆角半径

转载 作者:行者123 更新时间:2023-12-04 02:37:11 26 4
gpt4 key购买 nike

interview_timeline_row.xml

<LinearLayout
android:id="@+id/interviewTimelineIconLayout"
android:layout_width="52dp"
android:layout_height="52dp"
android:layout_marginTop="20dp"
android:background="@drawable/timeline_row_icon_layout_bg"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">

<ImageView
android:id="@+id/interviewTimelineRowIcon"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:adjustViewBounds="false"
android:cropToPadding="false"
android:padding="6dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</LinearLayout>

timeline_row_icon_layout_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

<corners android:radius="@dimen/_50sdp" />

<stroke android:width="1dp" android:color="@color/white" />

<solid android:color="@color/ic_rescheduled"/> //need to add this programatically

</shape>

采访时间线.java
iconBg = row.findViewById(R.id.interviewTimelineIconLayout);

iconBg.setBackgroundColor(getResources().getColor(R.color.ic_rescheduled)); //this is the wrong way to go about it

我想在我的应用程序的各个地方使用timeline_row_icon_layout_bg.xml,并且每次都应该有不同的背景颜色。如果我使用 iconBg.setBackgroundColor() 方法,那么它会忽略半径并且我有一个方形背景颜色。

最佳答案

由于您只是使用该形状来创建具有圆角和边框的布局,因此第一个选项是包装您的 LinearLayoutCardView 内然后将圆角半径、笔划和背景颜色应用于卡片。

否则你可以使用 MaterialShapeDrawable 包含在 Material 组件库中到 draw custom shapes .

只需从 LinearLayout 中删除 android:background :

<LinearLayout
android:id="@+id/interviewTimelineIconLayout"
android:layout_width=".."
android:layout_height="..
..>

<!-- ..... -->

</LinearLayout>

然后在您的代码中,您可以应用 ShapeAppearanceModel .就像是:
        float radius = getResources().getDimension(R.dimen.corner_radius);

LinearLayout linearLayout= findViewById(R.id.interviewTimelineIconLayout);
ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
.toBuilder()
.setAllCorners(CornerFamily.ROUNDED,radius)
.build();

MaterialShapeDrawable shapeDrawable = new MaterialShapeDrawable(shapeAppearanceModel);
//Fill the LinearLayout with your color
shapeDrawable.setFillColor(ContextCompat.getColorStateList(this,R.color.yourColor));
//Stroke color and width
shapeDrawable.setStrokeWidth(2.0f);
shapeDrawable.setStrokeColor(...);

ViewCompat.setBackground(linearLayout,shapeDrawable);

enter image description here

通过这种方式,您可以轻松更改和设置颜色背景和笔触。

关于android - 以编程方式更改 Drawable 的背景,保持圆角半径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61144528/

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