小编Bar*_*ski的帖子

如何删除Android的textview上的顶部和底部空间

当我包括下面XML布局文件,我可以看到下面的图片.如果你看到它,你会发现它TextView有顶部和底部空间.

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="E1"
android:background="#ff00ff00"/>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我希望删除这个空间.如何删除它?这叫什么?如果有人有线索...请告诉我.提前致谢.

android textview

61
推荐指数
5
解决办法
4万
查看次数

同时启动多个ViewPropertyAnimators

使用Animator类,您可以简单地调用类似下面的内容来同时播放多个动画:

AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(animatorsArray);
animatorSet.start();
Run Code Online (Sandbox Code Playgroud)

但我找不到任何与ViewPropertyAnimator兼容的类似内容.

(仅供参考.我正在尝试为多个listView项目制作动画)

animation android android-animation

22
推荐指数
2
解决办法
9008
查看次数

在 Android 中使用 Hilt 后无法创建视图模型的实例

这是我的AllFilesListViewModel课。

class AllFilesListViewModel @ViewModelInject constructor(
    private val pdfItemRepository: PdfItemRepository):ViewModel() {

}
Run Code Online (Sandbox Code Playgroud)

这里是PdfItemRepository课堂。

@Singleton
class PdfItemRepository @Inject constructor(private val pdfItemDao: PdfItemDao){

}
Run Code Online (Sandbox Code Playgroud)

对于pdfItemDao. 我创建了一个名为DatabaseModule. 下面是代码——

@Module
@InstallIn(ApplicationComponent::class)
object DatabaseModule {

    @Provides
    fun provideDatabase(@ApplicationContext context: Context):AppDatabase{
        return AppDatabase.getDataBase(context)
    }

    @Provides
    fun providePdfItemDao(database:AppDatabase):PdfItemDao{
        return database.pdfItemDao()
    }
}
Run Code Online (Sandbox Code Playgroud)

这是AllFilesFragment.kt我使用 viewModel的片段类。

@AndroidEntryPoint
class AllFilesFragment:Fragment(){

    private lateinit var binding:AllFilesFragmentBinding
    private val viewModel by viewModels<AllFilesListViewModel>()


    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? { …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack dagger-hilt

21
推荐指数
6
解决办法
8633
查看次数

如何将 TextStyle 从 Jetpack Compose 转换为 android.graphics.Typeface?

我需要Canvas在 Compose 中绘制文本,为此我需要一个TextPaintwith android.graphics.Typeface

有没有办法轻松地将 Compose 转换TextStyle为 a android.graphics.Typeface

android kotlin android-typeface android-jetpack-compose

14
推荐指数
1
解决办法
3281
查看次数

如何从注释处理器内部检查包是否存在(在编译时)?

我正在为Android构建一个Annotation Processor(为了将来的解释,让我们称之为TestProcessor).

计划是让处理器以两种模式运行:

  • Mode 1:生成代码 A

  • Mode 2:生成代码AB


Mode 2 只有在处理器生成代码的环境中存在附加(可选)包时才应选择.

如果可选包存在,有没有办法找到注释处理器的process方法


编辑1:

关于"(可选)包"的小澄清.通过附加包我的意思是一个java包,它可能但不一定存在于项目中(即使用处理器).可选包可以例如表示外部库的内容.外部库可以但不必包含在项目中.

我举一个小例子:

  • 假设我们有一个(单模块)项目Sample.
  • Sample正在使用我的TestProcessor.
  • 我们Square's Picasso以外部库为例
  • 如果SampleHAS Square's Picasso作为其依赖项之一,则TestProcessor运行Mode 2并生成代码AB.换句话说:如果您可以使用com.square.picasso(in Sample)中的类而没有任何问题,那么处理器应该运行Mode 2.
  • 如果没有Square's PicassoSample's相关性,TestProcessor工作中Mode 1,并生成唯一的代码A.

编辑2:

我想到了这个问题的两个解决方法:

  1. 为两个使用两种类型的注释processor Modes(例如: …

java android annotation-processing

13
推荐指数
1
解决办法
1269
查看次数

9
推荐指数
1
解决办法
2万
查看次数

如何将参数传递给 Hilt 模块?

我开始将 Dagger 应用程序迁移到 Hilt,首先我将 AppComponent 转换为 Hilt 自动生成的 ApplicationComponent。因此,我@InstallIn(ApplicationComponent::class)为与该组件相关的每个模块添加了注释。

现在我收到以下错误:

错误:[Hilt] 所有模块必须是静态的并使用静态提供方法或具有可见的无参数构造函数。

它指向这个模块:

@InstallIn(ApplicationComponent::class)
@Module
class AccountModule(private val versionName: String) {

    @Provides
    @Singleton
    fun provideComparableVersion(): ComparableVersion {
        return ComparableVersion(versionName)
    }
}
Run Code Online (Sandbox Code Playgroud)

以前在 Dagger 中,可以在构造函数中传递参数。看来希尔特不允许这样做。

如何将参数传递给 Hilt 模块?

android dagger-2 dagger-hilt

9
推荐指数
2
解决办法
8414
查看次数

Kotlin:如何使用 @see 引用 kDoc 中的方法?

我曾经像这样引用 Java Doc 中的方法:

/**
 * @see com.myapp.view.fragment.PlaybackControlFragment#onPlaybackStateChanged
 */
Run Code Online (Sandbox Code Playgroud)

我不知道如何在 kotlin 中引用相同的方法?

该部分com.myapp.view.fragment.PlaybackControlFragment已链接,但方法名称不可点击和链接。

什么是正确的语法?

javadoc code-documentation kotlin kdoc

7
推荐指数
1
解决办法
2505
查看次数

UnitTest协程Kotlin用例MVP

我试图模拟我的用例的响应,该用例适用于协程。

fun getData() {
    view?.showLoading()
    getProductsUseCase.execute(this::onSuccessApi, this::onErrorApi)
}
Run Code Online (Sandbox Code Playgroud)

我的useCase已注入演示者。

GetProductsUseCase具有以下代码:

class GetProductsUseCase (private var productsRepository: ProductsRepository) : UseCase<MutableMap<String, Product>>() {

    override suspend fun executeUseCase(): MutableMap<String, Product> {
        val products =productsRepository.getProductsFromApi()
        return products
    }
}
Run Code Online (Sandbox Code Playgroud)

我的BaseUseCase

abstract class UseCase<T> {

    abstract suspend fun executeUseCase(): Any

    fun execute(
        onSuccess: (T) -> Unit,
        genericError: () -> Unit) {
        GlobalScope.launch {
            val result = async {
                try {
                    executeUseCase()
                } catch (e: Exception) {
                    GenericError()
                }
            }
            GlobalScope.launch(Dispatchers.Main) {
                when {
                    result.await() is GenericError …
Run Code Online (Sandbox Code Playgroud)

android unit-testing kotlin-coroutines

7
推荐指数
1
解决办法
101
查看次数

Hilt creating different instances of view model inside same activity

After recently migrating from Dagger to Hilt I started observing very strange behavior with respect to ViewModels. Below is the code snippet:


@HiltAndroidApp
class AndroidApplication : Application() {}

@Singleton
class HomeViewModel @ViewModelInject constructor() :
    ViewModel() {}

@AndroidEntryPoint
class HomeFragment : Fragment(R.layout.fragment_home) {

    private val homeViewModel by viewModels<HomeViewModel>()

    override fun onResume() {
        super.onResume()
        Timber.i("hashCode: ${homeViewModel.hashCode()}")
    }
}


@AndroidEntryPoint
class SomeOtherFragment : Fragment(R.layout.fragment_home) {

    private val homeViewModel by viewModels<HomeViewModel>()

    override fun onResume() {
        super.onResume()
        Timber.i("hashCode: ${homeViewModel.hashCode()}")
    }
}

Run Code Online (Sandbox Code Playgroud)

The value of hashCode …

android dagger dagger-hilt

6
推荐指数
2
解决办法
2700
查看次数