我有一个对话框,用户可以在其中选择某些内容,并且根据选择,布局将更新。问题是对话框的高度永远不会更新以反映布局更改。
如何重构对话框以使布局适合对话框?
例子:
@Composable
fun AlertDialogTest() {
var showDialog by remember { mutableStateOf(false)}
var showExtra by remember { mutableStateOf(false)}
Button(onClick = { showDialog = true }) {
Text("Open dialog")
}
if (showDialog) {
AlertDialog(
text = {
Column { Button(onClick = {showExtra = true}) {
Text ("Show rest of dialog")
}
if (showExtra) {
Text("More text", style = MaterialTheme.typography.h5)
Text("Even more text", style = MaterialTheme.typography.h5)
}
}
},
confirmButton = { TextButton(onClick = { showDialog = false }) {
Text("Close") …Run Code Online (Sandbox Code Playgroud) 我是 Jetpack Compose 的新手,我花了几个小时来了解如何使 LazyColumn 更新我更新列表的内容。我读过它需要是一个不可变的列表来更新 LazyColumn,但我似乎无法让它工作。
代码如下:
@Composable
fun CreateList() {
var myList : List<DailyItem> by remember { mutableStateOf(listOf())}
myList = getDailyItemList() // Returns a List<DailyItem> with latest values and uses mutable list internally
// Function to refresh the list
val onUpdateClick = {
// Do something that updates the list
...
// Get the updated list to trigger a recompose
myList = getDailyItemList()
}
// Create the lazy column
...
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几件事,或者是点击更新按钮时列表从未更新,或者仅更新了第一个项目,但列表中的其余项目没有更新。我查看了文档,上面写着这一点,但我不明白:
我们建议您使用可观察的数据持有者,例如 State<List> 和不可变的 listOf(),而不是使用不可观察的可变对象。
如何更新列表以便更新 LazyColumn?
上个月的地理编码器每次因"grpc失败"错误而开始失败,我似乎无法解决它.我看过java.io.IOException:grpc失败但它并没有真正解决问题.
例如代码
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
addresses = geocoder.getFromLocation(lat, lng, 1); // Here if fails with "grpc failed"
Run Code Online (Sandbox Code Playgroud)
我已经使用了相同的代码多年,但最近它在我重新编译应用程序并在模拟器或真实设备上进行测试时已停止工作.
如果我针对SDK 25进行编译,使用构建工具25,它可以在具有SDK 25的模拟器上运行.但是如果我尝试使用SDK 24,26或任何其他SDK版本的模拟器,它将失败并显示"grpc failed".我试图创建一个新的虚拟设备等,但同样的问题.
我不知道如何解决它以及问题是什么.
当前设置:targetSDK/compileSDK 25,构建工具25.0.3,Android Studio 2.3.3,常规模拟器.(我尝试过其他构建工具和SDK版本,但问题仍然存在)
有任何想法吗?
使用Theme.NoDisplay主题时出现了一个奇怪的错误:显示另一个活动非常慢!
我从通知中打开一个不可见的活动,然后根据意图操作打开一个新的活动.
如果我使用任何其他主题,Theme.AppCompat那么打开输入对话框需要大约300毫秒.以Theme.NoDisplay主题为主,大约需要5秒钟!
如果我使用的logcat的话,我可以看到onCreate,onResume等在InputActivity被创建看不见的活动后,所谓的几毫秒,但直到它实际上是可见的,它需要几秒钟.我不明白该主题如何创建该效果或如何解决它(不使用服务).
无形的活动:
<activity
android:name=".InvisibleActivity"
android:excludeFromRecents="true"
android:noHistory="true"
android:launchMode="singleTask"
android:taskAffinity=""
android:theme="@android:style/Theme.NoDisplay"/>
Run Code Online (Sandbox Code Playgroud)
要打开的活动:
<activity
android:name=".InputActivity"
android:configChanges="locale"
android:hardwareAccelerated="false"
android:label="@string/lblAddTime"
android:theme="@style/theme.Dialog"
android:windowSoftInputMode="stateVisible|adjustResize" />
Run Code Online (Sandbox Code Playgroud)
通知的意图:
Intent stopIntent = new Intent(context, InvisibleActivity.class);
stopIntent.setAction(InvisibleActivity.STOP_TIMER);
stopIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pStopIntent = PendingIntent.getActivity(context, 0, stopIntent, 0);
Run Code Online (Sandbox Code Playgroud)
而在onCreate中InvisibleActivity,这就是所谓的:
Intent i = new Intent(getApplicationContext(), InputActivity.class);
startActivity(i);
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个对话框,您可以在其中选择一个数字。我使用FlowRow伴奏者。但滚动时会产生奇怪的结果。我想我在这里遗漏了一些东西。
代码:
@Composable
fun AlertDialogErrorTest() {
var showDlg by remember { mutableStateOf(false)}
val scrollState = rememberScrollState()
if (showDlg) {
AlertDialog(
onDismissRequest = { showDlg = false },
title = { Text(text = "Pick something from the list") },
text = {
FlowRow(modifier = Modifier.verticalScroll(scrollState)) {
for (i in 1..100) {
Box (modifier = Modifier.size(48.dp).padding(8.dp).background(Color.LightGray), contentAlignment = Alignment.Center) {
Text (i.toString())
}
}
}
},
confirmButton = {
TextButton(onClick = { showDlg = false }) {
Text("Done")
}
}, …Run Code Online (Sandbox Code Playgroud) 我试图将导航栏设置为与底部应用程序栏相同的颜色,但我不明白应用程序栏的颜色来自深色主题。看起来应该是这样MaterialTheme.colors.primarySurface,但我使用的systemUiController.setNavigationBarColor(color = MaterialTheme.colors.primarySurface)颜色与应用栏不同。此处您将看到两个都设置为 时的示例MaterialTheme.colors.primarySurface。
它适用于浅色主题,但不适用于深色主题。
那么深色主题应用栏颜色从何而来?
android android-jetpack-compose android-jetpack-compose-scaffold
我正在 Jetpack Compose 中使用DropdownMenu,但遇到一个问题,很多用户不明白菜单包含更多信息,以便他们可以滚动列表。我得到了很多人的支持,他们遗漏了清单中的内容。特别是在某些语言中,它可以很好地将高度与项目对齐,因此您不会看到有更多项目。
有没有办法自动设置下拉菜单的高度(无论语言如何),以便它在底部显示项目的一半,以便用户明白他们可以滚动列表?
我使用这些修改器创建菜单:
DropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
modifier = Modifier.requiredSizeIn(maxHeight = 330.dp)
) {
items.forEachIndexed { index, item ->
DropdownMenuItem(onClick = {
onSelected(index, item.data)
selectedIndex = index
expanded = false
}) {
...
}
Run Code Online (Sandbox Code Playgroud) 我第一次开始使用 .NET Core 2 和数据库,并查看了以下示例:Getting Started with EF Core on .NET Core Console App with a New database。我有几个模型,比如
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string …Run Code Online (Sandbox Code Playgroud) 我在熊猫中有这些数据
data = [
['ID', 'Time', 'oneMissing', 'singleValue', 'empty', 'oneEmpty'],
['CS1-1', 1, 10000, None, None, 0],
['CS1-2', 2, 20000, 0.0, None, 0],
['CS1-1', 2, 30000, None, None, 0],
['CS1-2', 1, 10000, None, None, None],
['CS1-11', 1, None, 0.0, None, None],
['CS1-2', 3, 30000, None, None, None]
]
Run Code Online (Sandbox Code Playgroud)
我尝试按 ID 和时间列排序,所以结果应该是这样的
'CS1-1', 1, 10000, None, None, 0
'CS1-1', 2, 30000, None, None, 0
'CS1-2', 1, 10000, None, None, None
'CS1-2', 2, 20000, 0.0, None, 0
'CS1-2', 3, 30000, None, None, None …Run Code Online (Sandbox Code Playgroud) 我已经开始使用 SwiftUI 并尝试将使用 Jetpack Compose 创建的应用程序转换为 iOS,但我遇到了菜单(或选择器,如果更容易的话)的问题。
我想要做的是能够创建具有多行且两行字体大小不同的项目。但我无法让它工作,只有第一行可见
我尝试过类似的事情:
Picker("Select menu item", selection: $selectedItem) {
ForEach(0..<items.count) {
VStack {
Text("Menu item 1").fontWeight(.bold) // Only this text is shown
Text("Description")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过
Menu("Options") {
VStack {
Text("Menu item 1").fontWeight(.bold) // Only this text is shown
Text("Description")
}
}
Run Code Online (Sandbox Code Playgroud)
我花了很多时间试图找到这样的例子。这可以在 SwiftUI 中做到吗?如果没有,您应该建议使用什么控件?