Есть ли способ, которым я могу указать форму треугольника в файле XML?
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="triangle">
<stroke android:width="1dip" android:color="#FFF" />
<solid android:color="#FFF" />
</shape>
мы можем сделать это с помощью формы пути или что-то? Мне просто нужен равносторонний треугольник.
Спасибо
Ответы:
В этом посте я опишу, как это сделать. А вот XML определяющий треугольник:
Обратитесь к моему посту, если что-то неясно или вам нужно объяснение, как оно построено. Вращается прямоугольник выреза :) Это очень умное и хорошо работающее решение.
РЕДАКТИРОВАТЬ: чтобы создать стрелку, указывающую как -> использовать:
И чтобы создать стрелку, указывающую как <- используйте:
источник
Вы можете получить здесь больше вариантов.
источник
<string name="bottom_arrow">▼</string>
Вы можете использовать,
vector
чтобы сделать треугольник, как этоic_triangle_right.xml
Тогда используйте это как
Для изменения цвета и направления используйте
android:tint
иandroid:rotation
результат
Для изменения формы вектора вы можете изменить ширину / высоту вектора. Пример изменения ширины до 10dp
источник
Вы можете использовать векторные рисунки .
Если ваш минимальный API меньше 21, Android Studio автоматически создает растровые изображения PNG для этих более низких версий во время сборки (см. Vector Asset Studio ). Если вы используете библиотеку поддержки, Android даже управляет «реальными векторами» вплоть до API 7 (подробнее об этом в обновлении этого поста внизу).
Красный треугольник, направленный вверх:
Добавьте его в свой макет и не забудьте установить clipChildren = "false", если вы поворачиваете треугольник.
Измените размер (ширину / высоту) треугольника, установив атрибуты Views layout_width / layout_height. Таким образом, вы также можете получить трехсторонний треугольник, если вы все сделаете правильно.
ОБНОВЛЕНИЕ 25.11.2017
Если вы используете библиотеку поддержки, вы можете использовать реальные векторы (вместо создания растрового изображения) еще в API 7 . Просто добавьте:
делай свое
defaultConfig
в build.gradle вашего модуля.Затем установите (векторный xml) объект рисования следующим образом:
Все очень хорошо задокументировано на странице Vector Asset Studio .
С тех пор, как эта функция, я работаю совершенно без растровых изображений с точки зрения иконок. Это также немного уменьшает размер APK.
источник
vectorDrawables.useSupportLibrary = true
имеет то дополнительное преимущество, что вы можете использовать цвета, определенные вcolors.xml
, потому что растровые изображения создаются во время сборки (когда определенные цвета недоступны).Я бы определенно пошел на реализацию View в этом случае:
Используйте его в ваших макетах следующим образом:
Использование этой реализации даст вам следующий результат:
источник
Решение Яцека Milewski работает для меня , и, основываясь на его решении, если вам нужно , и инвертирование треугольника вы можете использовать это:
источник
Смотрите ответ здесь: Пользовательские стрелки без изображения: Android
источник
Могу ли я помочь вам без использования XML?
Просто,
Пользовательский макет (срез):
Ваша деятельность (пример):
Рабочий пример:
Еще одна абсолютно простая
Calculate
функция, которая может вас заинтересовать.источник
Использование векторного рисования:
источник
L
иz
в конце концов исправили мою проблему, спасибо!Для тех, кто хочет стрелку прямоугольного треугольника, вот вам:
ШАГ 1. Создайте XML-файл для рисования, скопируйте и вставьте следующий XML-контент в свой XML-документ. (Обратите внимание, что вы можете использовать любое имя для вашего нарисованного XML-файла. В моем случае я называю его "v_right_arrow")
ШАГ 2. В XML вашего макета создайте View и привяжите его фон к рисуемому XML, который вы только что создали в STEP 1 . Для моего случая я связываю v_right_arrow со свойством background моего вида.
Пример вывода:
Надеюсь это поможет. Удачи!
источник
Вы можете добавить следующий треугольник в фоновом режиме, используя следующий XML
Вся логика для настройки дизайна XML в
pathData
. Рассмотрим верхний левый угол (0,0) и спроектируем макет в соответствии с вашими требованиями. Проверьте этот ответ.источник
источник
источник
Я никогда не делал этого, но насколько я понимаю, вы можете использовать класс PathShape: http://developer.android.com/reference/android/graphics/drawable/shapes/PathShape.html
источник
Я опоздал на вечеринку и столкнулся с той же проблемой, и Google указал мне на этот поток StackOverflow в качестве первого результата.
Смотрите снимок экрана с макетом на
Так что в итоге мы создали этот пользовательский класс представления, который может рисовать треугольник любого из следующих типов:
АСАС
Вы можете просто использовать его в XML-макете, как это
Я знаю, что OP хотят решения в xml-решении, но, как я уже говорил, проблема с xml-подходом. Надеюсь, это кому-нибудь поможет.
источник
Используя решение Яцека Милевского, я сделал ориентированный угол вниз с прозрачным фоном.
Вы можете изменить
android:pivotX
иandroid:pivotY
сместить угол.Использование:
Параметры зависят от размера изображения. Например, если
ImageView
имеет размер 100dp * 80dp, вы должны использовать эти константы:источник
Я пытаюсь создать треугольное изображение, как кнопка возврата на панели навигации Android, но я не нашел никакого решения.
Теперь я нашел решение для себя и хотел бы поделиться им.
используйте xml ниже
источник
источник
Google предоставляет треугольник равносторонний здесь .
Выберите VectorDrawable, чтобы размер был гибким.
Он интегрирован в Android Studio как плагин.
Если у вас есть изображение SVG, вы можете использовать его для преобразования в VectorDrawable.
Если у вас есть VectorDrawable, изменить его цвет и вращение легко, как уже упоминали другие.
источник