最近的android库就在几天前发布了,但是我希望它SnackBar出现在屏幕的顶部,最好是在RelativeLayout中,因为它是父视图.
怎样才能改变SnackBar这我相信是的初始对准layout_alignParentBottom来layout_alignParentTop?
android material-design snackbar android-design-library android-snackbar
试用新的设计支持库,我添加了一个小吃吧; 但与其主背景不同,文本区域未使用默认值着色#323232.相反,它看起来像这样.它似乎从android:background我自定义主题中定义的值中获取颜色styles.xml,如下所示:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:background">#4f4f5e</item>
...
</style>
Run Code Online (Sandbox Code Playgroud)
如果我试着用它强行着色
View snackbarView = snackbar.getView();
snackbarView.setBackgroundColor(Color.YELLOW);
Run Code Online (Sandbox Code Playgroud)
它只影响主背景,像这样,文本背景仍然被自定义主题着色.有没有办法保持我的自定义主题,并有一个标准的小吃吧?谢谢!
android material-design android-design-library android-snackbar androiddesignsupport
1)所有正在测试的设备/仿真器都禁用了动画.
2)我有一个@BeforeClass来构建我的Credentials对象.
3)我有一个在@Before中注册的IntenServiceIdlingResource和一个EventBusIdlingResource.
4)单击登录按钮时,IntentService将触发.在这种情况下,服务器(模拟服务器)返回500错误.该信息通过greenrobot的EventBus从IntentService发回UI,并显示Snackbar并显示错误消息.
这是测试的代码:
@Test
public void a_userNamePasswordTest() throws Exception {
// email input
ViewInteraction userNameView = onView(withId(R.id.email));
// verify it's on screen and enabled
userNameView.check(matches(isDisplayed())).check(matches(isEnabled()));
// set the username
userNameView.perform(scrollTo(), replaceText(credentials.username), closeSoftKeyboard());
// password input
ViewInteraction passwordView = onView(withId(R.id.password));
// verify it's on screen and enabled
passwordView.check(matches(isDisplayed())).check(matches(isEnabled()));
// set the password.
passwordView.perform(scrollTo(), replaceText(credentials.password), closeSoftKeyboard());
// sign in button
ViewInteraction signInButton = onView(withId(R.id.email_sign_in_button));
// verify the button
signInButton.check(matches(allOf(
isDisplayed(), isEnabled(), withText("Sign In"), withContentDescription("Sign In")
)));
// clickity click the …Run Code Online (Sandbox Code Playgroud) android android-support-library android-espresso android-snackbar
我想SnackBar从顶部提供动画,而不是显示SnackBar从底部开始的常规行为.这很容易被破解吗?
android android-support-library android-snackbar android-support-design
有没有办法阻止用户通过刷卡来解雇零食吧?
我有一个应用程序,在网络登录期间显示一个小吃店,我想避免它被解雇.
根据Nikola Despotoski的建议,我已经尝试了两种解决方案:
private void startSnack(){
loadingSnack = Snackbar.make(findViewById(R.id.email_login_form), getString(R.string.logging_in), Snackbar.LENGTH_INDEFINITE)
.setAction("CANCEL", new OnClickListener() {
@Override
public void onClick(View view) {
getOps().cancelLogin();
enableControls();
}
});
loadingSnack.getView().setOnTouchListener(new View.OnTouchListener() {
public long mInitialTime;
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v instanceof Button) return false; //Action view was touched, proceed normally.
else {
switch (MotionEventCompat.getActionMasked(event)) {
case MotionEvent.ACTION_DOWN: {
Log.i(TAG, "ACTION_DOWN");
mInitialTime = System.currentTimeMillis();
break;
}
case MotionEvent.ACTION_UP: {
Log.i(TAG, "ACTION_UP");
long clickDuration = System.currentTimeMillis() - mInitialTime;
if (clickDuration …Run Code Online (Sandbox Code Playgroud) 下面的简单代码显示Snackbar.
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_INDEFINITE)
.setAction("Action", null).show();
}
Run Code Online (Sandbox Code Playgroud)
onClick事件发生时,此代码正确显示Snackbar .
此外,这个小吃店可以通过轻扫手势解散.
但默认情况下,只有右键滑动才会关闭Snackbar.我无法用左键轻扫它.
如何在左侧轻扫时解雇小吃吧?
我在CoordinateLayout视图中有两个Fab.当我展示Snackbar时,我希望两个Fab一起上升,但结果是只有一个Fab(较低的一个)响应并上升(见图).我在这里想念什么?
叫小吃店
mSnackbar = Snackbar.make(getActivity().findViewById(R.id.coords_wrapper), "Loading", 1000000000);
Run Code Online (Sandbox Code Playgroud)
XML
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/coords_wrapper">
<!-- main contents here, left out -->
<Relativelayout ...... />
<android.support.design.widget.FloatingActionButton
android:id="@+id/action_button_location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src ="@drawable/ic_add_black"
android:layout_gravity="right|bottom"
android:layout_marginBottom="82dp"
android:layout_marginRight="16dp"
app:borderWidth="0dp"
app:elevation="6dp"
/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/action_button_filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src ="@drawable/ic_add_black"
android:layout_gravity="right|bottom"
android:layout_margin="16dp"
app:borderWidth="0dp"
app:elevation="6dp"
/>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud) android android-support-library android-design-library android-snackbar android-coordinatorlayout
由于我已将我的 Android 项目迁移到 AndroidX,我收到以下lint错误:
Error: Must be one of: Snackbar.LENGTH_INDEFINITE, Snackbar.LENGTH_SHORT, Snackbar.LENGTH_LONG [WrongConstant]
Snackbar snackbar = Snackbar.make(rootView, message, sticky ? Snackbar.LENGTH_INDEFINITE : 4500
Run Code Online (Sandbox Code Playgroud)
因此,我现在没有定义自定义持续时间(4500 毫秒),而是使用Snackbar.LENGTH_LONG. 由于我正在实施一些基于时间的操作,这取决于小吃栏的可见时间,因此我需要知道Snackbar.LENGTH_LONG以毫秒为单位的实际持续时间。我如何找出那个值?
这些文档在这里并没有真正的帮助:
显示 Snackbar 一小段时间。
我可以Snackbar.make()从后台线程调用没有任何问题.这对我来说是令人惊讶的,因为我认为UI操作只允许来自UI线程.但这绝对不是这种情况.
究竟有什么Snackbar.make()不同?当您从后台线程修改它时,为什么这不会导致像任何其他UI组件一样的异常?