小编Jas*_*oms的帖子

如何删除RadioListTile上的内部填充,以便可以连续使用3个RadioListTiles?

我对Flutter和Dart很陌生,对于这个特定主题,我似乎找不到任何提示。我正在尝试将3 RadioListTiles放入Row这样:

Row(
        children: [
          Expanded(
            child:RadioListTile<GoalSelection>(
              title: Text(
                'Net',
                style: Theme.of(context).textTheme.body1,
              ),
              value: GoalSelection.net,
              groupValue: _goalSelection,
              onChanged: (GoalSelection value) {
                setState(() {
                  _goalSelection = value;
                });
              },
            ),
          ),
          Expanded(
            child: RadioListTile<GoalSelection>(
              title: Text(
                'Gross',
                style: Theme.of(context).textTheme.body1,
              ),
              value: GoalSelection.gross,
              groupValue: _goalSelection,
              onChanged: (GoalSelection value) {
                setState(() {
                  _goalSelection = value;
                });
              },
            ),
          ),
          Expanded(
            child: RadioListTile<GoalSelection>(
              title: Text(
                'Salary',
                style: Theme.of(context).textTheme.body1,
              ),
              value: GoalSelection.salary,
              groupValue: _goalSelection,
              onChanged: (GoalSelection value) {
                setState(() {
                  _goalSelection = …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-layout

6
推荐指数
4
解决办法
1534
查看次数

正在调用 OnBackPressedCallback,但应用程序不会返回

我最近更新了我的依赖项,以包含OnBackPressedCallback从接口到抽象类的更改。

我已经根据此处的新文档进行了设置,但我觉得事情并没有像他们应该的那样工作。

我的片段OnCreate看起来很像文档:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        requireActivity().onBackPressedDispatcher.addCallback(this) {
            backPressed()
    }
}
Run Code Online (Sandbox Code Playgroud)

当我按下后退按钮时,代码backPressed()运行,但没有更多的发生。

我曾尝试在回调内部调用handleBackPressed()andrequireActivity().onBackPressedDispatcher.onBackPressed()requireActivity().onBackPressed(),但这些都会导致 StackOverflowError ,因为它似乎递归地运行该回调。

必须有一些非常明显的东西我错过了......

android android-jetpack android-architecture-navigation androidx

6
推荐指数
3
解决办法
6935
查看次数

共享元素的输入过渡不起作用,但返回过渡可以正常工作(片段过渡)

我将从显示事件情况的gif图像开始。

发生的事情的GIF

该列表项应该设置为动画头文件。如您所见,当按下“后退”按钮时,标题项目会向下动画,成为列表项目。还有一个问题,这些片段的“活动”父对象也会在渐变过渡之后闪烁,因此,如果您对此有任何想法,我想知道:)

现在,在粘贴代码片段之前对我的代码进行一些解释。这个应用程式可浏览HTML文件的树状结构。小RecyclerView列表项是文档的标题。单击文档时,它会将标题固定在顶部,WebView并显示HTML。只有一个片段,并且在创建新片段时,该片段会创建其自身的另一个实例。该结构有些奇怪,但是后退按钮和堆栈似乎可以正常工作。这段代码在C#中,因为我使用的是Xamarin.Android,但除单击处理外,大多数代码都非常相似。

我可以从我的XML文件开始。布局仍然是WIP,所以我知道它们很凌乱。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/linear_layout_main"
    android:background="#ffffff">
  <LinearLayout
    android:id="@+id/progressLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:visibility="gone"
    android:gravity="center">
    <ProgressBar
        android:id="@+id/progressbar"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
  </LinearLayout>
  <LinearLayout
      android:id="@+id/subroutines_layout"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:gravity="center"
      android:orientation="vertical"
      android:background="#ffffff">
    <TextView
        android:id="@+id/routine_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:padding="5dp"
        android:textSize="24sp"
        android:visibility="gone"/>
    <FrameLayout
       android:id="@+id/preview_frame"
       android:layout_width ="match_parent"
       android:layout_height="150dp"
       android:visibility="gone">
      <WebView
        android:id="@+id/routine_preview"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:gravity="center_vertical"
        android:padding="5dp"
        android:transitionName="webview_preview_transition"
        android:scrollbars="none"
        android:visibility="gone"/>
      <TextView
        android:id="@+id/routine_preview_clickable"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:gravity="center_vertical"
        android:visibility="gone"/>
    </FrameLayout>
    <TextView
        android:id="@+id/preview_separator"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:gravity="center_vertical"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:background="@color/material_grey_100"
        android:visibility="gone"/>
    <android.support.v7.widget.RecyclerView
        android:id="@+id/routines_rv"
        android:layout_width="match_parent"
        android:layout_height="match_parent" …
Run Code Online (Sandbox Code Playgroud)

android android-animation xamarin.android android-transitions shared-element-transition

5
推荐指数
0
解决办法
714
查看次数

FileProvider 正在打开一个 PDF,但它是空白的。为什么?

FileProvider我的应用程序中有一个,它假装它正在工作,但它打开的文件是空白的。我已经确认该文件已经在设备上的指定目录中并且不是空白的,但是当我尝试从我的应用程序内部打开它时它失败了。没有崩溃,也没有错误信息。有没有人见过这个?

文件提供者:

<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.my.redacted.provider" android:exported="false" android:grantUriPermissions="true">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" />
        </provider>
Run Code Online (Sandbox Code Playgroud)

provider_paths.xml

<?xml version="1.0" encoding="utf-8" ?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
  <external-path name="external_storage" path="." />
</paths>
Run Code Online (Sandbox Code Playgroud)

编码:

    var path = "/storage/emulated/0/MyApp/User/attachments/folder/attachment.pdf"
    var file = new Java.IO.File(path);
    var mime = MimeTypeMap.Singleton;
    var ext = MimeTypeMap.GetFileExtensionFromUrl(path).ToLower();
    var type = mime.GetMimeTypeFromExtension(ext);

    var intent = new Intent();
    intent.SetAction(Intent.ActionView);
    var name = activity.PackageName + ".provider";
    var uri = FileProvider.GetUriForFile(activity.ApplicationContext, name, file);
    intent.SetDataAndType(uri, type);
    intent.SetFlags(ActivityFlags.GrantReadUriPermission);
    intent.SetFlags(ActivityFlags.GrantWriteUriPermission);

    var packageManager = activity.PackageManager;
    if (intent.ResolveActivity(packageManager) != null)
        activity.RunOnUiThread(() => activity.StartActivity(intent)); …
Run Code Online (Sandbox Code Playgroud)

android xamarin.android android-file android-fileprovider

3
推荐指数
1
解决办法
1881
查看次数