小编Ray*_* Li的帖子

约束布局垂直对齐中心

如何在约束布局中垂直对齐和居中对象?可以垂直或水平对齐,但除了限制两个网格线之间的视图之外,我还没有找到同时居中的方法.

垂直对齐中心: 在此输入图像描述

似乎居中是约束布局的一个巨大问题,迫使我回到"centerInParent","centerVertical"和"centerHorizo​​ntal"的相对布局.

我想使用约束布局创建红色框的布局: 在此输入图像描述

不幸的是,我发现不使用两个网格线的唯一方法是使用嵌套的Relative和LinearLayouts(Constraint Layout应该解决这个确切的场景!).

使用相对和线性布局的布局:

<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="12dp"
    app:layout_constraintTop_toBottomOf="@id/user_points"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent">

    <LinearLayout
        android:id="@+id/stat_1_layout"
        android:layout_width="60dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="12dp"
        android:layout_marginRight="12dp"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/divider_1"
        android:orientation="vertical">

        <TextView
            android:id="@+id/stat_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal"
            android:text="10"
            android:textSize="16dp"
            android:textColor="@color/textSecondaryDark"
            android:maxLines="1"/>

        <TextView
            android:id="@+id/stat_detail_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:gravity="center"
            android:text="Streak"
            android:textSize="8sp"
            android:textColor="@color/textSecondary"
            android:maxLines="1"/>
    </LinearLayout>

    <View
        android:id="@+id/divider_1"
        android:layout_width="1dp"
        android:layout_height="38dp"
        android:layout_toLeftOf="@+id/stat_2_layout"
        android:background="@drawable/linedivider"/>

    <LinearLayout
        android:id="@+id/stat_2_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="18dp"
        android:layout_marginRight="18dp"
        android:layout_centerInParent="true"
        android:orientation="vertical">

        <TextView
            android:id="@+id/stat_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal"
            android:text="243"
            android:textSize="16dp"
            android:textColor="@color/textSecondaryDark"
            android:maxLines="1"/>

        <TextView
            android:id="@+id/stat_detail_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:gravity="center"
            android:text="Calories Burned"
            android:textSize="8sp"
            android:textColor="@color/textSecondary"
            android:maxLines="1"/>
    </LinearLayout> …
Run Code Online (Sandbox Code Playgroud)

android android-constraintlayout constraint-layout-chains

62
推荐指数
7
解决办法
9万
查看次数

如何在 Flutter 中取整一个数字?

Flutter 中如何将数字四舍五入到最接近的整数?

  • 0.1 => 1
  • 1.5 => 2
  • -0.1 => -1

Numround方法四舍五入到最接近的整数。怎么总能四舍五入?

dart flutter

7
推荐指数
2
解决办法
2433
查看次数

Flutter StreamBuilder 在初始化时调用了两次

StreamBuilder 总是被调用两次吗?一次用于初始数据,然后一次用于输入流?

初始化以下 StreamBuilder 显示构建方法被调用了两次。第二个调用是在第一个调用之后的 0.4 秒。

流:构建 1566239814897

流:构建 1566239815284

import 'dart:async';
import 'dart:ui';

import 'package:flutter/material.dart';
import 'package:nocd/utils/bloc_provider.dart';

void main() =>
    runApp(BlocProvider<MyAppBloc>(bloc: MyAppBloc(), child: MyApp()));

class MyAppBloc extends BlocBase {
  String _page = window.defaultRouteName ?? "";

  /// Stream for [getPage].
  StreamController<String> pageController = StreamController<String>();

  /// Observable navigation route value.
  Stream get getPage => pageController.stream;

  MyAppBloc() {}

  @override
  void dispose() {
    pageController.close();
  }
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final MyAppBloc myAppBloc = BlocProvider.of<MyAppBloc>(context);
    return …
Run Code Online (Sandbox Code Playgroud)

dart flutter stream-builder

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

不使用 BuildContext 预加载图像

有没有办法在函数中加载 Flutter 中的图像而无需访问 BuildContext?

Flutter可以预加载图片,但precacheImage()需要BuildContext,使用起来不方便。

我想在不支持的initState()StatefulWidget 方法中加载图像。precacheImage()

关于预加载图像存在一个未解决的问题,表明当前不支持在没有 BuildContext 的情况下加载图像。

https://github.com/flutter/flutter/issues/26127

dart flutter

5
推荐指数
1
解决办法
1569
查看次数

从Viewholder通知RecyclerView适配器的最佳方式?

我有一个带有多个项目视图类型的RecyclerView,因此它们被分成单独的ViewHolder类.之前,当所有ViewHolder与RecyclerView Adapter位于同一类时,我可以在单击或删除项目时直接更新适配器.但是,我将ViewHolders分成不同的类以更好地组织代码.现在,我无法直接更新我的RecyclerView适配器.以下哪种解决方案是从ViewHolder与我的适配器进行通信的最佳方式?如果有比我列出的更好的解决方案,请建议!

  1. 使用具有回调侦听器的接口.请记住,可能有5-10种不同的视图类型,因此这种方法需要5-10个接口?
    1. 使用Eventbus库,如Greenrobot的Eventbus.

接口或事件总线解决方案真的是最好的方法吗?肯定有一种更好的方法来进行视图和适配器之间的通信!

android android-viewholder android-recyclerview

4
推荐指数
1
解决办法
5388
查看次数

如何垂直或水平居中堆栈中的小部件?

Center部件在堆叠的中心部件水平和垂直中心。如何仅水平或垂直居中小部件?

使用行或列小部件可以使堆栈中的小部件居中。可以在不使用这些小部件的情况下完成吗?

状况:

  • 不能使用行/列。
  • Stack 的大小在布局之前是未知的(不能使用硬编码的 Positioned 值)。

中心小部件:

堆栈中的居中小部件

Container(
      decoration:
          BoxDecoration(border: Border.all(color: Colors.black87, width: 10)),
      child: Stack(
        children: [
          Center(
            child: Container(color: Colors.amber, width: 50, height: 50),
          ),
        ],
      ),
    );
Run Code Online (Sandbox Code Playgroud)

与行水平居中:

堆栈中水平居中的小部件

Row(mainAxisAlignment: MainAxisAlignment.center)

垂直居中与列:

堆栈中垂直居中的小部件

Column(mainAxisAlignment: MainAxisAlignment.center)

上面的对齐是想要的结果。使用其他 Flutter 小部件可以实现这些结果吗?

flutter flutter-layout flutter-widget

4
推荐指数
1
解决办法
1346
查看次数

NoSuchMethodError:在 null 上调用了方法“markNeedsBuild”

一个NoSuchMethodError: The method 'markNeedsBuild' was called on null.出现在错误日志错误。我从来没有在调试中看到过这个错误,用户也没有报告任何问题。为什么会发生此错误,我可以做些什么来防止它发生?

flutter

4
推荐指数
1
解决办法
1113
查看次数