我正在尝试将矢量资产设置到fab中。但是结果是这样的: 如您所见,矢量在那里,但是向下和向左。这是布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBg"
tools:context=".ui.main.fragments.HomeFragment">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab_new_sale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
app:backgroundTint="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@drawable/ic_cart_plus"
android:scaleType="center"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_home_cards"
android:layout_width="0dp"
android:layout_height="0dp"
android:foregroundGravity="center_vertical|center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
这是向量:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="200"
android:viewportHeight="200">
<path
android:fillColor="#FF000000"
android:pathData="M165.1,119.28L75,119.28l2,9.84h82.48a7.37,7.37 0,0 1,7.19 9l-1.7,7.46a17.2,17.2 0,1 1,-19.54 3.19L81,148.77a17.21,17.21 0,1 1,-20.6 -2.63L38.85,40.62L17.38,40.62A7.38,7.38 0,0 1,10 33.24L10,28.33A7.37,7.37 0,0 1,17.38 21h31.5a7.38,7.38 0,0 1,7.23 5.9l2.81,13.77h120.7a7.37,7.37 0,0 1,7.19 9l-14.52,63.91A7.38,7.38 0,0 1,165.1 119.28ZM135.38,72.58L120.63,72.58L120.63,60.28a4.92,4.92 0,0 0,-4.92 -4.91h-4.92a4.91,4.91 0,0 0,-4.91 4.91v12.3L91.13,72.58a4.91,4.91 0,0 0,-4.92 4.91v4.92a4.92,4.92 0,0 0,4.92 4.92h14.75L105.88,99.62a4.91,4.91 0,0 0,4.91 4.91h4.92a4.92,4.92 0,0 0,4.92 -4.91L120.63,87.33h14.75a4.92,4.92 0,0 0,4.91 -4.92L140.29,77.49A4.91,4.91 0,0 0,135.38 72.58Z" />
</vector>
对于此问题的任何帮助,我们将不胜感激
答案 0 :(得分:2)
设置
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
在您的build.gradle
答案 1 :(得分:1)
我认为您需要更新依赖项
在使用这些依赖项时,它可以正常工作:
implementation 'androidx.appcompat:appcompat:1.2.0-alpha02'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation "com.google.android.material:material:1.1.0"
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/drawable_test"
/>
答案 2 :(得分:0)
FloatingActionButton 小部件提供了Material Design浮动操作按钮组件的完整实现。
升级依赖项
<?php
class TodoQuestion{
private int $id;
private string $question;
/**
* @param array<TodoQuestionValue> $values
*/
private array $values;
private TodoRepositoryInterface $repository;
public function __constructor(TodoRepositoryInterface $repository){
$this->repository = $repository;
}
public function getValues(){
$this->values = $this->repository->listValuesByQuestionId($this->id);
}
}
使用AppCompat和 app:srcCompat 是最安全的方法 将矢量可绘制对象集成到您的应用中。
最后
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
注意-请减小宽度,高度值。
<com.google.android.material.floatingactionbutton.FloatingActionButton
app:srcCompat="@drawable/your_vector"
Android Studio 1.4引入了对矢量的有限兼容性支持 通过在生成时生成PNG文件来绘制对象。但是,向量 可绘制和动画矢量可绘制支持库同时提供 灵活性和广泛的兼容性-这是一个支持库,因此您 可以将其与所有回溯至Android 2.1(API 7级以上)。要将您的应用配置为使用矢量支持库,请添加 应用中的build.gradle文件中的vectorDrawables元素 模块。
使用以下代码片段配置vectorDrawables元素:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="200"
android:viewportHeight="200">
答案 3 :(得分:0)
u可以用这个想法解决您的问题,
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab_new_sale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
app:backgroundTint="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:src="@drawable/ic_cart_plus"
android:scaleType="center"/>
在这里您可以使用由app:srcCompat插入的android:src
答案 4 :(得分:0)
它对我来说使用以下依赖关系
implementation 'androidx.appcompat:appcompat'
implementation 'com.google.android.material:material:1.1.0'
implementation "androidx.constraintlayout:constraintlayout:2.0.0-beta4"
尝试更新这些依赖关系。我没有做任何重新缩放。也许还会提到this和this问题,因为可能您的可绘制对象没有正确居中并离开圆圈
答案 5 :(得分:0)
您只需要将srcCompat
更改为src
,就可以为您解决问题。
为了您的方便,我附上了自己的FAB代码:
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab_explore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_16"
android:src="@drawable/ic_explore_black_24dp"
app:backgroundTint="@color/accent"
app:tint="@color/color_white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
答案 6 :(得分:0)
我知道这是个老问题,其他人可能也有同样的问题,所以我添加了这个答案。
正如其他人所建议的,将以下依赖项添加到build.gradle:
implementation 'androidx.appcompat:appcompat'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta4'
还有其他建议,请将其添加到build.gradle:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
在向量中,将android:width
和android:height
更改为android:width="24dp"
和android:height="24dp"
。
在布局中,在com.google.android.material.floatingactionbutton.FloatingActionButton
中,添加app:fabCustomSize="56dp"
,或者在其中添加app:fabSize="normal"
。