我在其中使用带有ProgressDialog的AsyncTask.这会自动导致背景暗淡约40%.我想把这个昏暗的(0%暗淡),但我尝试过,但没有用:
myLoadingDialog = new ProgressDialog(MainActivity.this.getApplicationContext());
myLoadingDialog.setMessage("Loading...");
myLoadingDialog.setIndeterminate(true);
myLoadingDialog.setCancelable(false);
WindowManager.LayoutParams lp = myLoadingDialog.getWindow().getAttributes();
lp.dimAmount = 0.0f;
myLoadingDialog.show();
Run Code Online (Sandbox Code Playgroud)
这个昏暗的问题是,我必须终止我的Tablet的SystemUI-Process以实现Kiosk模式(没有System-Bar),并且ProgressDialog使除了System-Bar所在的区域之外的所有内容都变暗,所以我有一个明亮的边框在屏幕的底部.
如果有办法获得完整的全屏模式,我也会很开心.
谢谢你的帮助
我在 android 上遇到了 Snackbars 的一个奇怪问题。我通过 Snackbar + Retry-Action 显示错误消息。当单击“重试”并且错误仍然存在(例如没有互联网)时,我再次显示错误。单击 Snackbar 中的操作会自动关闭当前显示的 Snackbar,并显示新的 Snackbar,而旧的 Snackbar 仍按预期工作。
但有时(当我单击“重试”约 30 次时)多次按下按钮后,Snackbar 根本不显示。
我可以用这个简单的代码重现它:
final View.OnClickListener retryListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
showSnackbar();
}
};
private void showSnackbar() {
Snackbar snackbar = Snackbar.make(root, "Error", BaseTransientBottomBar.LENGTH_INDEFINITE)
.setAction("Retry", retryListener)
//Callback only for debugging-purposes
.addCallback(new BaseTransientBottomBar.BaseCallback<Snackbar>() {
@Override
public void onShown(Snackbar transientBottomBar) {
super.onShown(transientBottomBar);
Log.d(TAG, "onShown called");
}
});
snackbar.show();
Log.d(TAG, "show called");
}
Run Code Online (Sandbox Code Playgroud)
与此代码出现问题后,当我看看logcat中,最后一行是show called和onShown-callback没有了叫。
为什么会发生这种情况?我应该将此报告为问题吗?任何已知的解决方法?
我正在 Jetpack Compose 中构建一个可重用的 Button 组件,它基本上是一个Row. 该按钮的左端应有文本,右端应有图标。这可以直接像这样工作:
@Composable
fun MyButton(
text: String,
modifier: Modifier = Modifier
) {
Button(
onClick = { /* */ },
modifier = modifier
) { // RowScope
Text(
text = text
)
Spacer(modifier = Modifier.width(8.dp))
Icon(
painter = painterResource(
id = android.R.drawable.ic_dialog_info
),
contentDescription = null
)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果按钮应用固定宽度,则文本和图标将居中而不是在左/右端。
所以我尝试添加modifier = Modifier.weight(1F)到,Text以便它填满任何额外的空间。但这会导致没有固定宽度的按钮占用尽可能多的空间。
如何构建一个可在两种情况下工作的 Compose 组件:定义宽度时和换行到内容时?
我的屏幕布局:
@Composable
fun MyScreen() {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.fillMaxSize()
) …Run Code Online (Sandbox Code Playgroud) android android-layout android-jetpack-compose android-compose-button android-jetpack-compose-button
我用一些额外的内容启动一个 Intent,并在 Activity 的中读取传递的额外内容onCreate
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val extras: Bundle? = intent.extras // <-- crash
val someInt = extras?.getInt(EXTRA_SOME_INT, -1) ?: -1
// ...
}
companion object {
const val EXTRA_SOME_INT = "someInt"
fun createIntent(context: Context, someInt: Int) =
Intent(context, MyActivity::class.java).apply {
putExtra(EXTRA_SOME_INT, someInt)
}
}
}
// Activity started like this:
fun startMyActivity(context: Context) {
context.startActivity(MyActivity.createIntent(context, 1234))
}
Run Code Online (Sandbox Code Playgroud)
getExtras()这工作正常,但是在生产中,标记的行有时会导致应用程序在调用时崩溃。根据文档,它可以为空,但它不应该引发异常。
崩溃日志并不总是相同,但这种情况发生在BaseBundle:
java.lang.NullPointerException
Attempt to invoke virtual method 'int …Run Code Online (Sandbox Code Playgroud)