在CoordinatorLayout我的一个布局中加入新内容之后,我遇到了与Adviews重叠的问题FloatingActionButton.
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags="scroll|enterAlways" />
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="@dimen/fab_margin"
android:src="@drawable/ic_done" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
资料来源: https ://github.com/chrisbanes/cheesesquare/blob/master/app/src/main/res/layout/include_list_viewpager.xml
如果我采用相同的布局并在AdView下面加入,FloatingActionButton则会导致FloatingActionButton不再使用SnackBars:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags="scroll|enterAlways" />
<android.support.design.widget.TabLayout …Run Code Online (Sandbox Code Playgroud) android admob floating-action-button android-snackbar android-coordinatorlayout
我正在开发一个Android应用程序.在那我想在对话框中显示材料设计Snackbar.可能吗?如果是,那怎么样?
请帮我.
谢谢.
在Snackbar我的一些应用程序中实现新的后,我收到以下错误:
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 at
android.support.v4.widget.ViewDragHelper.shouldInterceptTouchEvent(SourceFile:1014) at
android.support.design.widget.SwipeDismissBehavior.onInterceptTouchEvent(SourceFile:188) at
android.support.design.widget.Snackbar$Behavior.onInterceptTouchEvent(SourceFile:659) at
android.support.design.widget.Snackbar$Behavior.onInterceptTouchEvent(SourceFile:641) at
android.support.design.widget.CoordinatorLayout.performIntercept(SourceFile:343) at
android.support.design.widget.CoordinatorLayout.onInterceptTouchEvent(SourceFile:376) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1827) at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2241) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1946) at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2241) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1946) at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2241) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1946) at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2241) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1946) at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2241) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1946) at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2241) at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1946) at
com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1968) at
com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1420) at
android.app.Activity.dispatchTouchEvent(Activity.java:2428) at
android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(SourceFile:59) at
android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(SourceFile:59) at
com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1916) at
android.view.View.dispatchPointerEvent(View.java:7475) at
android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3744) at
android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3672) at
android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4924) at
android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4884) at
android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5036) at
android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179) at
android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method) at
android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:171) at
android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:5004) at
android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:5058) at …Run Code Online (Sandbox Code Playgroud) android android-design-library android-snackbar android-coordinatorlayout
我的appcompat活动中有一个小吃吧.它有一个按钮OK,可以解开零食吧.它正在工作.但是我不能在轻扫(左到右)时忽略小吃吧.
以下是我的小吃吧代码....
final Snackbar snackbar = Snackbar
.make(view, "Error Message", Snackbar.LENGTH_INDEFINITE);
snackbar.setAction("OK", new View.OnClickListener() {
@Override
public void onClick(View view) {
snackbar.dismiss();
}
});
snackbar.show();
Run Code Online (Sandbox Code Playgroud)
编辑1
我的相对布局作为我的活动的XML布局中的父布局.
我试图在我的SnackBar下面显示一个,ToolBarMainActivity
我试过这段代码:
mToolbar = (Toolbar) findViewById(R.id.toolbar);
Snackbar snack = Snackbar.make(findViewById(android.R.id.content), "Had a snack at Snackbar", Snackbar.LENGTH_LONG);
View view = snack.getView();
FrameLayout.LayoutParams params =(FrameLayout.LayoutParams)view.getLayoutParams();
params.gravity = Gravity.TOP;
view.setLayoutParams(params);
snack.show();
Run Code Online (Sandbox Code Playgroud)
但SnackBar它显示在顶部,但不低于Toolbar.
我想要一些类似于Hangout应用程序的东西:
主要活动:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/Coordinator"
xmlns:fab="http://schemas.android.com/apk/res-auto"
tools:context=".MainActivity">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<ImageView
android:layout_width="75dp"
android:layout_height="28dp"
android:src="@drawable/athena"/>
</android.support.v7.widget.Toolbar>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar5"
android:layout_marginTop="10dp"
android:layout_gravity="center_horizontal" />
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" …Run Code Online (Sandbox Code Playgroud) 当SnackBar从里面显示一个时Activity,我有rootView可用的.但我需要在SnackBar里面展示一个Service,我没有View可用的.我怎么能做到这一点?
作为背景故事:活动启动服务来执行任务.在Service需要显示SnackBar根据情况.我不想为此纠结Service.那么我怎么能做到这一点呢?通常我可以显示一个Toast,但我需要用户能够阅读该消息并确认.
我有一个Snackbar如下:
但是,如果下拉的AutoCompleteTextView时间过长,则下拉将阻止Snackbar.
正如您在上图中看到的那样,Snackbar实际上正在显示.然而,长期下降阻碍了它的可见性.您可以从上面的图像中看到
我尝试使用以下内容Snackbar code.添加bringToFront()没有多大帮助.
private void showSnackbar(String message) {
Snackbar snackbar
= Snackbar.make(getActivity().findViewById(R.id.content), message, Snackbar.LENGTH_LONG);
snackbar.getView().bringToFront();
snackbar.show();
}
Run Code Online (Sandbox Code Playgroud)
R.id.content是一个CoordinatorLayout:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/content"
android:background="?attr/MyActivityBackground"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:foreground="?attr/headerShadow" />
Run Code Online (Sandbox Code Playgroud)
有没有什么好办法可以避免Snackbar被AutoCompleteTextView摔倒?
android autocompletetextview android-windowmanager android-snackbar android-coordinatorlayout
我在我的应用程序中添加了Snackbar.问题是在API 19中它不在屏幕的底部.
在API 21中没关系.这是我的布局
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data />
<android.support.design.widget.CoordinatorLayout
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/home_search_input_hint"
android:inputType="text"
android:maxLength="30"
android:maxLines="1"/>
</android.support.constraint.ConstraintLayout>
</android.support.design.widget.CoordinatorLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
和我的 OnCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_home);
super.onCreate(savedInstanceState);
// binding
binding = DataBindingUtil.setContentView(this, R.layout.activity_home);
// snackbar test
Snackbar snackbar = Snackbar.make(binding.root, "Snackbar", Snackbar.LENGTH_INDEFINITE);
snackbar.show();
}
Run Code Online (Sandbox Code Playgroud)
你有任何想法如何解决它?
更新:从底部开始的边缘似乎是随机的,我重新运行模拟器并看到这一点.
还有这个
我在协程范围内调用 launch 但它不执行。Snackbar 操作监听器正在执行,但启动块由于某种原因没有执行。
CoroutineScope(Dispatchers.Main).launch {
val scope = this
val mn = snackbarManager(R.id.root)
Snackbar
.make(mn.container, R.string.recpt_deleted, Snackbar.LENGTH_LONG)
.setAction(R.string.undo) {
scope.launch { // not executing
Toast.makeText(requireContext(),"Committing",Toast.LENGTH_LONG).show()
Log.d("COMMIT", "calling commit")
}
}
.show()
}
Run Code Online (Sandbox Code Playgroud) android kotlin android-snackbar kotlin-coroutines coroutinescope
下面的简单代码用于显示 Compose Snackbar
当 onClick 事件发生时,此代码正确显示 Snackbar。
val scaffoldState = rememberScaffoldState() // this contains the `SnackbarHostState`
val coroutineScope = rememberCoroutineScope()
Scaffold(
modifier = Modifier,
scaffoldState = scaffoldState // attaching `scaffoldState` to the `Scaffold`
) {
Button(
onClick = {
coroutineScope.launch { // using the `coroutineScope` to `launch` showing the snackbar
// taking the `snackbarHostState` from the attached `scaffoldState`
val snackbarResult = scaffoldState.snackbarHostState.showSnackbar(
message = "This is your message",
actionLabel = "Do something."
)
when (snackbarResult) {
SnackbarResult.Dismissed -> Log.d("SnackbarDemo", "Dismissed") …Run Code Online (Sandbox Code Playgroud)