我使用这种风格来改变我的背景颜色Button:
<style name="AccentButton" parent="Widget.AppCompat.Button.Colored">
<item name="colorButtonNormal">@color/colorAccent</item>
<item name="android:textColor">@color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
在布局中:
<Button
android:id="@+id/login_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/fragment_login_login_button"
app:theme="@style/AccentButton"/>
Run Code Online (Sandbox Code Playgroud)
有用.但是当我打电话setEnabled(false)给它时Button,它保持相同的颜色.我该如何处理这个案子?
我java.lang.StackOverflowError试图序列化Object包含时得到java.nio.file.Path
即使我写道:
public class PathConverter implements JsonDeserializer<Path>, JsonSerializer<Path> {
@Override
public Path deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
return Paths.get(jsonElement.getAsString());
}
@Override
public JsonElement serialize(Path path, Type type, JsonSerializationContext jsonSerializationContext) {
return new JsonPrimitive(path.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
并应用它:
String json = new GsonBuilder()
.registerTypeAdapter(Path.class, new PathConverter())
.create()
.toJson(constructorSetup, new TypeToken<ConstructorSetup>() {}.getType());
Run Code Online (Sandbox Code Playgroud)
我仍然无法序列化这个类:
public class ConstructorSetup {
private Path appIconMimmapDirPathOnPc;
}
Run Code Online (Sandbox Code Playgroud)
Stacktrace :(完全在pastebin上)
Exception in thread "main" java.lang.StackOverflowError
at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375) …Run Code Online (Sandbox Code Playgroud) 有一个方案描述了我的应用程序的视图层次结构.
还有一些XML
主要活动
. CoordinatorLayout
. FrameLayout <- ContentFragment inserted here
app:layout_behavior="@string/appbar_scrolling_view_behavior"
. AppBarLayout
. Toolbar
Run Code Online (Sandbox Code Playgroud)
ContentFragment
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="56dp"
android:layout_height="56dp"
android:src="@drawable/ic_plus_white_36dp"
android:layout_gravity="bottom|end"
android:layout_margin="15dp"
app:elevation="6dp"
app:pressedTranslationZ="12dp"/>
<TextView
android:id="@+id/hint_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/empty_dates_list"
android:padding="20dp"
android:textSize="20sp"
android:layout_gravity="center" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
用这个代码我做SnackBar:
Snackbar snackbar = Snackbar.make(
mainActivity.getCoordinatorLayout(),
R.string.date_removed,
Snackbar.LENGTH_LONG);
Run Code Online (Sandbox Code Playgroud)
我的问题是,我在ContentFragment中fab没有提升SnackBar
我也试过点fab作为观点,Snackbar但它没有带来结果.
android android-layout android-fragments android-coordinatorlayout
我如何在Kotlin中使用RxBinding:
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
reset_password_text_view.clicks().subscribe { presenter.showConfirmSecretQuestionBeforeResetPassword() }
password_edit_text.textChanges().skip(1).subscribe { presenter.onPasswordChanged(it.toString()) }
password_edit_text.editorActionEvents().subscribe { presenter.done(password_edit_text.text.toString()) }
}
Run Code Online (Sandbox Code Playgroud)
Observable.subscribe(action)回报Subscription.我应该保留它作为参考并取消订阅onPause()或onDestroy()?
像这样:
private lateinit var resetPasswordClicksSubs: Subscription
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
resetPasswordClicksSubs = reset_password_text_view.clicks().subscribe { presenter.showConfirmSecretQuestionBeforeResetPassword() }
}
override fun onDestroy() {
super.onDestroy()
resetPasswordClicksSubs.unsubscribe()
}
Run Code Online (Sandbox Code Playgroud) 有时我在申请中遇到了罕见的错误.但我无法重现它,因为它非常罕见.所以,我决定写简单的浓咖啡测试:
@RunWith(AndroidJUnit4::class)
@LargeTest
class MainActivityTest {
val password = "1234"
@Rule @JvmField
var mActivityRule: ActivityTestRule<MainActivity> = ActivityTestRule(MainActivity::class.java)
@Test
fun checkNotesListNotEmpty() {
onView(withId(R.id.password_edit_text)).perform(typeText(password))
onView(withId(R.id.notes_recycler_view)).check { view, noMatchingViewException ->
if (noMatchingViewException != null) throw noMatchingViewException
assertThat((view as RecyclerView).adapter.itemCount, Matchers.`is`(1))
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何在匹配失败时循环此测试并停止它?
我CoordinatorLayout有AppBarLayout和Toolbar它里面:
CoordinatorLayout
- AppBarLayout
- Toolbar
animateLayoutChanges=true
Run Code Online (Sandbox Code Playgroud)
真好 我使用此代码隐藏/显示back arrow button:
private void setBackArrowState(boolean state) {
actionBar.setDisplayHomeAsUpEnabled(state);
actionBar.setDisplayShowHomeEnabled(state);
}
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
当back arrow button隐藏时,title没有动画到它的正常位置。我该如何解决?
android android-animation android-layout android-actionbar android-toolbar
标题中的问题.
我尝试过类似的东西:
onView(withId(R.id.search_edit_text))
.perform(typeText("some"), pressKey(KeyEvent.KEYCODE_ENTER));
Run Code Online (Sandbox Code Playgroud)
但它不起作用.键盘仍然显示,而TextView.OnEditorActionListener不是调用.有任何想法吗?
我试着这样做:
ZoneOffset zoneOffset = ZoneOffset.ofHours(3);
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.now();
System.out.println("dateTimeWithoutOffset: " + fmt.format(dateTime));
ZonedDateTime zonedDateTime = ZonedDateTime.of(dateTime, zoneOffset);
System.out.println("dateWithOffset: " + fmt.format(zonedDateTime));
Run Code Online (Sandbox Code Playgroud)
但我得到相同的输出:
dateTimeWithoutOffset: 18:11:06
dateTimeWithOffset: 18:11:06
Run Code Online (Sandbox Code Playgroud)
我想看到这样的事情:
dateTimeWithoutOffset: 18:11:06
dateTimeWithOffset: 21:11:06
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
在我的应用程序中,我有SQLite db.我想介绍用户设备之间的同步.Firebase DB看起来是一个可接受的解决方案,但Firebase DB最初是云数据库.所以,我不能将它用作本地数据库,如果用户拒绝auth对话并让他使用app,但没有云同步.
现在我考虑将我local SQLite db与... 结合起来cloud Firebase db.
例如,当用户添加新行时local SQLite db,我的应用程序也会将数据放入Firebase DB.此用户的其他设备将捕获此事件并更新其本地数据库.当用户使用身份验证并在新设备上安装应用程序时,我希望它能够下载所有行并将其放入local SQLite db.这是我的想法:Firebase DB 仅用于同步数据,而不是用于将其存储在设备上.主要原因是让用户使用我的应用程序而无需验证和同步.第二个that Firebase DB不是设计用作本地数据库.
我是正确的?是否可以将Firebase DB与另一个本地数据库一起使用?
相关问题:
链接他想要我想要的一样:
我的计划是为用户提供保持离线的选项
android firebase android-sqlite firebase-authentication firebase-realtime-database
我所看到的:
我想看的是:
我尝试添加阴影,css但效果仅在SceneBuilder 中可见。程序窗口显示为无阴影。
.rootBorder {
-fx-effect: dropshadow(gaussian, rgba(0, 0, 0, 0.4), 10, 0.5, 0.0, 0.0);
}
Run Code Online (Sandbox Code Playgroud)
如何在舞台上添加阴影?谢谢。