flutter - ListView.builder 项目未在滚动方向水平的容器内居中对齐
问题描述
这是我的小部件:
// the category selector widget
class CategorySelector extends StatefulWidget {
const CategorySelector({Key? key}) : super(key: key);
@override
_CategorySelectorState createState() => _CategorySelectorState();
}
class _CategorySelectorState extends State<CategorySelector> {
// categories
List<String> categories = ['Messages', 'Online', 'Groups', 'Requests'];
@override
Widget build(BuildContext context) {
return Container(
color: Colors.blue,
height: 80,
alignment: Alignment.centerLeft, // FIXME: doesn't work
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20.0),
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: categories.length,
itemBuilder: (context, index) {
return Text(categories[index]);
},
),
),
);
}
}
电流输出
问题是 ListView.builder 项目没有在滚动方向水平的容器内的中心对齐。我想在左中对齐 ListView 项目。我可以知道我该怎么做吗?
解决方案
据我所知,ListView 总是获得她父级高度/宽度的完整大小取决于滚动方向。那就是我们需要定义列表视图的高度/宽度。对于你的,scrollDirection 是水平的,所以解决方案是
Container(
color: Colors.blue,
height: 80,
alignment: Alignment.center, // FIXME: does it work for you?
child: Container(
height: 14,
child: ListView.builder(
shrinkWrap: true,
scrollDirection: Axis.horizontal,
itemCount: categories.length,
itemBuilder: (context, index) {
return Text(categories[index], style: TextStyle(fontSize: 14),);
},
),
),
)
推荐阅读
- android - jar 文件放在 Assets/Plugins/Android 的子文件夹下会不会被打包?
- javascript - 我的 if 语句做错了什么?
- android - How to get current build variant in kotlin
- hash-function - What is Perl's default hash implementation?
- flutter - 如何检查输入的电话号码是否有效?
- javascript - TypeError:无法读取 null 的属性 [在调用外部(延迟)/内部 JSFile 时]
- gatsby - Cannot debug gatsby website in chrome dev tools
- python - 数据类型的张量流警告
- pyspark - pyspark能否实现自定义序列化对象
- django - 如何在 Django REST API 框架中设置我自己的 JSON 密钥标签?