小编Har*_*r S的帖子

现在 Handler() 已被弃用,我该使用什么?

如何修复此代码中的弃用警告?或者,还有其他选择吗?

Handler().postDelayed({
    context?.let {
        //code
    }
}, 3000)
Run Code Online (Sandbox Code Playgroud)

java android kotlin android-handler

184
推荐指数
12
解决办法
7万
查看次数

Android:DataBinding 和 ViewBinding 之间的区别

自 Jetpack 发布以来,我们一直在使用DataBinding。Android 文档表明ViewBinding已添加到Android Studio 3.6 Canary 11+ 中。

我阅读了文档,但它看起来类似于DataBinding。

谁能解释一下这两个概念之间的区别?

data-binding android android-databinding android-jetpack android-viewbinding

75
推荐指数
4
解决办法
2万
查看次数

如何在 Android Compose 中设置 Material3 卡的背景颜色?

我尝试使用backgroundColor参数在 Android Jetpack Compose 中设置 Material3 卡的背景颜色。

实现 'androidx.compose.material3:material3:1.0.0-alpha14'

// * Card with background color argument
            Card(
                modifier = Modifier
                    .fillMaxWidth()
                    .padding(16.dp),
                //set background color of the card
                backgroundColor = Color.Gray,
                content = {
                    Text("Card with background color argument", modifier = Modifier.padding(16.dp),style = MaterialTheme.typography.labelLarge)
                }
            )
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:找不到具有此名称的参数:backgroundColor 在此输入图像描述

android android-jetpack-compose android-jetpack-compose-material3

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

导航组件共享元素转换适用于输入但不适用于弹出

我正在尝试在 2 个片段 BlankFragment 和 BlankFragment2 之间使用共享元素动画。BlankFragment 有一个回收器视图,而 BlankFragment2 是一个详细信息屏幕。他们共享一张图片,而我正在使用新的导航组件。

在 BlankFragment 中,我正在使用共享图像的转换名称构建FragmentNavigator.Extras附加内容并将其传递给我的调用navigate(因为它是一个回收器视图,并且这些需要是唯一的),

在 BlankFragment2 中,我收到此名称,将其设置为我的图像并设置 setSharedElementEnterTransition

结果是进入动画工作正常但退出/返回没有,我试过设置它们而不是设置它们(因为我相信导航组件应该为我处理这个)有人可以帮忙吗?

MainActivity 导航设置

private void setNavigation() {
    navController = Navigation.findNavController(this, R.id.main_fragment);
    NavigationUI.setupActionBarWithNavController(this, navController);
}
Run Code Online (Sandbox Code Playgroud)

处理后退按钮

@Override
public boolean onSupportNavigateUp() {
    return Navigation.findNavController(this, R.id.main_fragment).navigateUp()
        || super.onSupportNavigateUp();
}
Run Code Online (Sandbox Code Playgroud)

空白片段点击

@Override
public void onClick(View view, int position) {

    NavController navController = Navigation.findNavController(recyclerView);

    FragmentNavigator.Extras extras = new FragmentNavigator.Extras.Builder().addSharedElement(view, view.getTransitionName()).build();

    BlankFragmentDirections.ActionBlankFragmentToBlankFragment2 directions = BlankFragmentDirections.actionBlankFragmentToBlankFragment2(view.getTransitionName());

    navController.navigate(directions,extras);

}
Run Code Online (Sandbox Code Playgroud)

BlankFragment2 onCreate 带有返回/退出转换

@Override
public void onCreate(Bundle savedInstanceState) …
Run Code Online (Sandbox Code Playgroud)

android android-transitions material-design shared-element-transition android-jetpack-navigation

11
推荐指数
1
解决办法
2371
查看次数

Android 撰写文本的自动链接

有没有办法在 JetPack Compose Text 上使用android:autoLink功能?

我知道,在一个简单的标签/修饰符中使用此功能可能不是“声明性方式”,但也许有一些简单的方法?

对于文本样式我可以使用这种方式

 val apiString = AnnotatedString.Builder("API provided by")
        apiString.pushStyle(
            style = SpanStyle(
                color = Color.Companion.Blue,
                textDecoration = TextDecoration.Underline
            )
        )
        apiString.append("https://example.com")

        Text(text = apiString.toAnnotatedString())
Run Code Online (Sandbox Code Playgroud)

但是,我该如何管理这里的点击呢?如果我以编程方式说出我期望系统(电子邮件、电话、网络等)的行为,那就太好了。喜欢它。与 TextView 一起使用。谢谢

android textview android-jetpack-compose

11
推荐指数
1
解决办法
7239
查看次数

Android FAB 转换为菜单

根据更新的材料指南,浮动操作按钮可以转换为如下所示的菜单:

Fab到菜单

有人可以帮我提供一些代码或一些关于如何实现这种行为的链接吗?

谢谢你。

android menu kotlin material-design floating-action-button

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

如何启用 Compose 小吃栏的滑动关闭行为

下面的简单代码用于显示 Compose Snackbar

当 onClick 事件发生时,此代码正确显示 Snackbar。

 val scaffoldState = rememberScaffoldState() // this contains the `SnackbarHostState`
    val coroutineScope = rememberCoroutineScope()

    Scaffold(
        modifier = Modifier,
        scaffoldState = scaffoldState // attaching `scaffoldState` to the `Scaffold`
    ) {
        Button(
            onClick = {
                coroutineScope.launch { // using the `coroutineScope` to `launch` showing the snackbar
                    // taking the `snackbarHostState` from the attached `scaffoldState`
                    val snackbarResult = scaffoldState.snackbarHostState.showSnackbar(
                        message = "This is your message",
                        actionLabel = "Do something."
                    )
                    when (snackbarResult) {
                        SnackbarResult.Dismissed -> Log.d("SnackbarDemo", "Dismissed") …
Run Code Online (Sandbox Code Playgroud)

android android-snackbar android-jetpack-compose

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

Navigation component - No Directions class generated

I have a fragment A where an action is originated to fragment B which have to receive an argument. When I try to set the argument before navigate, 'FragmentADirections' class can't be resolve. The fact is, I have a fragment C going to D with an argument to and this work well for these two.

Fragment A class ('EntrainementAction'):

    package com.example.androidsportsomveille.Fragments;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import …
Run Code Online (Sandbox Code Playgroud)

navigation android android-studio android-architecture-navigation

8
推荐指数
3
解决办法
4068
查看次数

如何在 Android 上设置 google SwitchMaterial 按钮的样式?

我有一个像这样的材料切换按钮:

<com.google.android.material.switchmaterial.SwitchMaterial
                android:id="@+id/effectEnabled"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="3"
                style="@style/ButtonStyle2"
                android:checked="true"
                android:enabled="true" />
Run Code Online (Sandbox Code Playgroud)

这是样式:

<style name="ButtonStyle2" parent="Base.Widget.AppCompat.Button">
        <!--<item name="android:fontFamily">sans-serif-light</item>-->
        <!--<item name="android:textStyle">bold</item>-->
        <item name="android:textColor">@color/colorPrimary</item>
        <item name="android:textSize">20sp</item>
        <item name="android:textAllCaps">false</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

使用这些样式,按钮会损坏并带有灰色方形背景。

如何设置 SwitchMaterial 按钮的样式?我只想改变开关颜色

layout android material-design material-components-android

8
推荐指数
1
解决办法
3477
查看次数

如何使用导航组件管理权限请求代码?

如何使用导航组件管理权限请求代码?

我引用了太多网站和堆栈链接,但没有一个起作用,仍然显示已弃用的 Waring 在此输入图像描述

谷歌参考链接: https://developer.android.com/training/permissions/requesting#manage-request-code-yourself

代码::在片段中使用以下代码

  private fun checkMultiplePermissions() {
        // check permission first
        if (ActivityCompat.checkSelfPermission(requireContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // request the permission
            requestPermissions(arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), 100)
        } else {
            proceedAfterPermission()  // has the permission.
        }
    }
    override fun onRequestPermissionsResult(requestCode: Int,
                                            permissions: Array<String>, grantResults: IntArray) {
        myLog("log", "location code : $requestCode")
        when (requestCode) {
            100 -> {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // permission was granted.
                    proceedAfterPermission() // …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-permissions android-architecture-components registerforactivityresult

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