Да, это может помочь вам с шириной приложения: layout_constraintWidth_percent = "0.33" ConstraintLayout имеет много преимуществ, которые вы можете использовать для построения представлений, используя только родительский

ВАНИЕ

Как мне создать вид, похожий на этот.

Я хотел бы нарисовать вид на экране, который представляет собой линию, разбитую на сегменты, показывающие значения в процентах от всего вида. Мои требования

вид имеет разные разделы, которые разных цветовпредставление может отображать не все разделы, оно может иметь только первые 2 или первый и последний или только один цвет и т. д. - это известно только во время выполненияразмер различных разделов известен только во время выполнения, поэтому необходимо указывать программнолевый и правый углы всего вида закруглены

ИДЕИ / Вещи, которые я испытал

(1) Пользовательский вид рендеринга 3 прямоугольника рядом

Я попробовал пользовательский вид, который отображает 3 прямоугольника рядом. Но они, очевидно, имеют квадратные углы.

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    int viewHeight = 50;

    canvas.drawrect(0,  0, 60,  viewHeight, paint); // A
    canvas.drawrect(60, 0, 120, viewHeight, paint); // B
    canvas.drawrect(120,0, 180, viewHeight, paint); // C
}

(2) Форма с закругленными углами

Я знаю, что могу использовать форму, чтобы определить прямоугольник со скругленными углами, используя следующее, но это один цвет.

<shape xmlns:android="http://schemas.android.com/apk/res/android">
     ...        
    <corners
        android:radius="4dp" />
    ....
</shape>

(3) Список слоев

ИзAndroid прямоугольник с двумя разными цветамиЯ вижу, что могу использовать список слоев, чтобы указать каждый элемент в форме, чтобы иметь разные цвета.

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

    <item>
        <shape android:shape="rectangle">
            <size
                android:width="40dp"
                android:height="40dp" />
            <solid android:color="#F86F05" />
        </shape>
    </item>

    <item android:top="10dp">
        <shape android:shape="rectangle">
            <size
                android:width="30dp"
                android:height="30dp" />
            <solid android:color="#B31F19" />
        </shape>
    </item>

</layer-list>

(4) Список слоев с углами ??

Могу ли я добавить тег «углы» ко всему списку слоев, чтобы получить закругленные основные углы? Я предполагаю, что нет, и что угловая часть должна быть в тегах формы "Item".

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

    <corners
        android:radius="4dp" />

    <item>
        <shape android:shape="rectangle">
            <size
                android:width="40dp"
                android:height="40dp" />
            <solid android:color="#F86F05" />
        </shape>
    </item>

    <item android:top="10dp">
        <shape android:shape="rectangle">
            <size
                android:width="30dp"
                android:height="30dp" />
            <solid android:color="#B31F19" />
        </shape>
    </item>

</layer-list>

РЕЗЮМЕ

Этот последний приближается к моему требованию, однако

Как я могу указать ширину каждого "элемента" программнокак показать / скрыть "элемент" программнокак бы я закруглил только верхние наиболее видимые верхние углы "предмета" и нижние самые нижние углы "предмета"

ОБНОВЛЕНИЕ: КАК ДОБАВИТЬ ЛИФТ / СЕРУЮ ГРАНИЦУ

Спасибо "@ 0X0nosugar" за ваше решение. Теперь я хочу добавить высоту или небольшую серую границу, поскольку один из цветов очень светлый и близок к цвету фона. Когда я добавляю следующее, я получаю прямоугольную тень, которая выглядит ужасно с изогнутыми углами.

android:elevation="2dp"
android:outlineProvider="bounds"

Я хотел бы, чтобы это появилось как ниже

Ответы на вопрос(4)

Ваш ответ на вопрос