如何将相同的圆角设置为线性布局?
How to set the same rounded corner to linear layouts?
我正在尝试使用线性布局制作单个条形图(不想使用 MPAndroidChart 或其他库)。
这是我想要实现的目标:
如您所见,无论布局的宽度如何,角都相同 degree/radius。
这是我所做的:
看起来不错,但问题来了:当线性布局的宽度较小时,半径无法按我想要的方式工作
我希望两者的半径角相同,像这样(蓝色部分应该被切断):
我希望我可以设置 radius
属性 一些百分比,但这不可能。这是布局:
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraint_layout_statistics_budgeting_recycler_view_chart"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginHorizontal="8dp"
android:layout_marginTop="24dp"
android:background="@drawable/rounded_bar_chart_total"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/image_view_statistics_budgeting_recycler_view_category_image">
<LinearLayout
android:id="@+id/linear_layout_statistics_budgeting_recycler_view_bar_chart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/rounded_bar_chart_spent"
android:orientation="horizontal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
和两个drawable
文件(唯一的区别是颜色):
<?xml version="1.0" encoding="utf-8"?>
<!-- rounded_bar_chart_total-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="48dp" />
<padding
android:bottom="@dimen/margin_extra_small"
android:left="@dimen/margin_extra_small"
android:right="@dimen/margin_extra_small"
android:top="@dimen/margin_extra_small" />
<solid android:color="#8FEFEEEC" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<!--rounded_bar_chart_spent-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="48dp" />
<solid android:color="#5CE662" />
</shape>```
Any help how to do this?
您不必自己对进度条进行硬编码。似乎 material components library
实现了这个(需要 com.google.android.material:material:1.3.0'
)。检查 here 是否有 github 文档,这是我做的一个例子:
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/linearProgressIndicator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="false" // static progress bar
android:progress="50"
app:trackCornerRadius="10dp"
app:trackThickness="20dp" />
我正在尝试使用线性布局制作单个条形图(不想使用 MPAndroidChart 或其他库)。
这是我想要实现的目标:
如您所见,无论布局的宽度如何,角都相同 degree/radius。
这是我所做的:
看起来不错,但问题来了:当线性布局的宽度较小时,半径无法按我想要的方式工作
我希望两者的半径角相同,像这样(蓝色部分应该被切断):
我希望我可以设置 radius
属性 一些百分比,但这不可能。这是布局:
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraint_layout_statistics_budgeting_recycler_view_chart"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginHorizontal="8dp"
android:layout_marginTop="24dp"
android:background="@drawable/rounded_bar_chart_total"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/image_view_statistics_budgeting_recycler_view_category_image">
<LinearLayout
android:id="@+id/linear_layout_statistics_budgeting_recycler_view_bar_chart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/rounded_bar_chart_spent"
android:orientation="horizontal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
和两个drawable
文件(唯一的区别是颜色):
<?xml version="1.0" encoding="utf-8"?>
<!-- rounded_bar_chart_total-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="48dp" />
<padding
android:bottom="@dimen/margin_extra_small"
android:left="@dimen/margin_extra_small"
android:right="@dimen/margin_extra_small"
android:top="@dimen/margin_extra_small" />
<solid android:color="#8FEFEEEC" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<!--rounded_bar_chart_spent-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="48dp" />
<solid android:color="#5CE662" />
</shape>```
Any help how to do this?
您不必自己对进度条进行硬编码。似乎 material components library
实现了这个(需要 com.google.android.material:material:1.3.0'
)。检查 here 是否有 github 文档,这是我做的一个例子:
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/linearProgressIndicator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="false" // static progress bar
android:progress="50"
app:trackCornerRadius="10dp"
app:trackThickness="20dp" />