我正在使用以下指南来实现滚动感知FAB:
https://guides.codepath.com/android/Floating-Action-Buttons#overview
创建类之后,通过在XML中声明它来设置行为,如下所示:
<android.support.design.widget.FloatingActionButton
app:layout_behavior="com.codepath.floatingactionbuttontest.ScrollAwareFABBehavior" />
Run Code Online (Sandbox Code Playgroud)
由于我的代码是如何编写的,我想以编程方式而不是XML中设置行为.我有一种感觉,这是通过CoordinatorLayout完成的,但我画了一个空白.
任何帮助,将不胜感激!
提前致谢.
android android-support-library floating-action-button android-design-library android-support-design
我想设置FitsSystemWindows = true我的工具栏或/和更改通知栏颜色。但这不起作用。我想做的事:图片
我的代码在这里: 样式
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColorPrimary">@color/colorWhite</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>
Run Code Online (Sandbox Code Playgroud)
ActivityDrawerLayout - 其他活动的基础活动
<android.support.v4.widget.DrawerLayout ...
android:fitsSystemWindows="true"
tools:context="com.peter.freshNews.activity.DrawerActivity">
<android.support.design.widget.NavigationView ...
android:background="@color/drawer_background"
android:fitsSystemWindows="true"
app:menu="@menu/drawer_menu" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
活动主体
<FrameLayout ...
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinatorLayout"
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager.../>
<include layout="@layout/toolbar" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
工具栏
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:background="@android:color/transparent">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:collapsedViewOffset="0dp"
app:contentScrim="?attr/colorPrimary"
app:expandedViewOffset="0dp"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ViewSwitcher …Run Code Online (Sandbox Code Playgroud) 由于我的声誉点很低,我无法发表评论。所以我要扩展这个问题: 禁用用户在BottomSheet上拖动
Ray W 提供的解决方案有效,但现在它通过在父视图(CoordinatorLayout)上滑动和拖动来扩展。
在该图像中,如果我拖动“不需要的拖动区域”,BottomSheet 会向上滑动。如何过滤或停止不需要的视图上的触摸事件?
android android-support-library android-support-design bottom-sheet
我正在尝试创建一个与Google Photosapp UI 类似的应用程序.支持Libary版本= 25.1.0.
半透明状态和导航栏的问题,内部的小部件CoorinatorLayout看起来并不像预期的那样.设置fitsSystemWindows=true属性BottomNavigationView使其太大(屏幕截图1),并且SnakBar在这种情况下出现在导航栏后面,而不是在BottomNavView预期的上方或导航栏.如果我添加fitsSystemWindows=true在Toolbar(截图2),然后BottomNavigationView失去它的fitsSystemWindows属性和Toolbar内容的地方去了.它看起来像一个支持库错误,但我不确定.
这是我的DSL代码:
coordinatorLayout {
customToolbar {
id = TOOLBAR
// fitsSystemWindows = true
title = createTitle(ctx)
lparams(matchParent, dip(48))
}
frameLayout {
id = CONTENT_FRAME
backgroundResource = R.color.colorBackground
lparams(matchParent, matchParent)
}
bottomNavigationView(R.style.Base_ThemeOverlay_AppCompat_Dark) {
id = BOTTOM_NAVIGATION_VIEW
fitsSystemWindows = true
itemIconTintList = ContextCompat.getColorStateList(ctx, R.drawable.nav_item_color_state)
itemTextColor = ContextCompat.getColorStateList(ctx, R.drawable.nav_item_color_state)
backgroundResource = R.color.colorAccent
inflateMenu(R.menu.menu_drawer_2)
lparams(matchParent) {
anchorGravity = Gravity.BOTTOM …Run Code Online (Sandbox Code Playgroud) android kotlin android-support-library anko android-support-design
我在Firebase崩溃报告Password toggle button中遇到了一些关于某些真实设备中处于发布模式的应用的错误.问题是堆栈跟踪错误完全与android.support.design代码类似,您将在以下从firebase控制台获取的日志中看到:
异常java.lang.NullPointerException:尝试在空对象引用上调用虚方法'int java.util.ArrayList.size()'
android.graphics.drawable.AnimatedVectorDrawable.isStarted(AnimatedVectorDrawable.java:427)
android.graphics.drawable .AnimatedVectorDrawable.start(AnimatedVectorDrawable.java:440)
android.graphics.drawable.AnimatedStateListDrawable $ AnimatedVectorDrawableTransition.start(AnimatedStateListDrawable.java:339)
android.graphics.drawable.AnimatedStateListDrawable.selectTransition(AnimatedStateListDrawable.java:226)
android.graphics.drawable .AnimatedStateListDrawable.onStateChange(AnimatedStateListDrawable.java:145)
android.graphics.drawable.Drawable.setState(Drawable.java:599)
android.support.v4.graphics.drawable.DrawableWrapperGingerbread.setState(DrawableWrapperGingerbread.java:145)
android.support .v4.graphics.drawable.DrawableWrapperLollipop.setState(DrawableWrapperLollipop.java:95)
android.widget.ImageView.drawableStateChanged(ImageView.java:1115)
android.support.v7.widget.AppCompatImageButton.drawableStateChanged(AppCompatImageButton.java:149)
android.view.View.refreshDrawableState(View.java:16052)
android.support.design.widget.CheckableImageButton.setChecked(CheckableImageButton.java:75 )
android.support.design.widget.TextInputLayout.passwordVisibilityToggleRequested(TextInputLayout.java:1293)
android.support.design.widget.TextInputLayout $ 4.onClick(TextInputLayout.java:1074)
android.view.View.performClick(View.java:4785 )
android.view.View $ PerformClick.run(View.java:19888)
android.os.Handler.handleCallback(Handler.java:739)
android.os.Handler.dispatchMessage(Handler.java:95)
android.os.Looper .loop(Looper.java:135)
android.app.ActivityThread.main(ActivityThread.java:5276)
java.lang.reflect.Method.invoke(Method.java)java.lang.reflect.Method.invoke(Method.java) :372)
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:911)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)
之前我一直在跟踪与此小部件相关的一些错误,我的意思是,我发布了与密码切换可见性相关的问题,我发现了一些关于此组件的问题:
我还发现了一些关于它的AOSP问题:
现在,当用户只需按下切换按钮时,我就会收到此错误
它发生在以下真实设备中:
关于TextInputLayout和TextInputEditText的XML及其主题:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/TextLabel"
app:passwordToggleEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/login_field_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/perfil_field_password"
android:inputType="textPassword"
android:maxLines="1"
android:maxLength="100"
android:imeOptions="actionDone"
android:textColor="@color/colorAccent"
android:textSize="18sp"
android:paddingStart="15dp"
android:paddingEnd="5dp"/> …Run Code Online (Sandbox Code Playgroud) android android-support-library android-support-design android-textinputlayout android-textinputedittext
我希望在底部工作表展开时将工具栏向上推出视图,并在折叠时将其拉回。我看到的所有示例都是合并到工具栏或捕捉到工具栏顶部的其他视图,但它们都没有隐藏工具栏。如何做到这一点?
<?xml version="1.0" encoding="utf-8"?>
<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/activity_map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
>
<FrameLayout
android:id="@+id/mainContentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/red"
/>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
>
<FrameLayout
android:id="@+id/topContentContainer"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/blue"
app:layout_scrollFlags="scroll|enterAlways|snap"
/>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/categoriesSelectionContainer"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="@color/green"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="android.support.design.widget.AppBarLayout.ScrollingViewBehavior"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type …Run Code Online (Sandbox Code Playgroud) android android-layout android-design-library android-support-design
Snackbars通过在屏幕底部显示简短消息来提供有关操作的轻量级反馈.Snackbars可以包含一个动作.
Android还提供了一个toast,主要用于系统消息传递.Toasts与snackbars类似,但不包含动作,不能在屏幕上滑动.
我的问题
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class TestReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
Toast.makeText(context, "status", Toast.LENGTH_LONG).show();
}
}
Run Code Online (Sandbox Code Playgroud)
难道是更多钞票来显示Snackbar的BroadcastReceiver一样Toast?
android broadcastreceiver android-support-library snackbar android-support-design
你好.在上图中,您可以看到后退箭头和(部分)标题.我使用附加的.xml代码更改了标题颜色.但是我想把后箭头变成白色.
我在网上看了一些答案,但对于这么简单的问题,它们看起来太复杂了.
这有什么简单的原因吗?
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="fill_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:titleTextColor="@android:color/white"/>Run Code Online (Sandbox Code Playgroud)
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
//...
public class LoginActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
//...
}
//...
}Run Code Online (Sandbox Code Playgroud)
android android-appcompat material-design android-toolbar android-support-design
以下是我的配置.这适用于Android Lollipop但在Android Kitkat上崩溃.
我尝试了每个解决方法,但无法帮助:
错误膨胀类android.support.design.widget.NavigationView
的build.gradle
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
// Support RenderScript Library v8
renderscriptTargetApi 18
renderscriptSupportModeEnabled true
}
}
ext{
supportLibVersion = '23.1.1'
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile "com.android.support:appcompat-v7:${supportLibVersion}"
compile "com.android.support:design:${supportLibVersion}"
compile "com.android.support:cardview-v7:${supportLibVersion}"
compile "com.android.support:recyclerview-v7:${supportLibVersion}"
}
Run Code Online (Sandbox Code Playgroud)
主题 style.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item> …Run Code Online (Sandbox Code Playgroud) android android-support-library navigation-drawer navigationview android-support-design
我有一个支持工厂定义如下:
<android.support.design.widget.FloatingActionButton
android:id="@+id/somefab"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
app:elevation="6dp"
app:rippleColor="@android:color/white"
/>
Run Code Online (Sandbox Code Playgroud)
如果我像这样以编程方式设置backgroundtintlist,那么它可以工作:
somefab.setBackgroundTintList(ColorStateList.valueOf(Color.GRAY));
Run Code Online (Sandbox Code Playgroud)
但是,这是一个支持工厂,应该在较低的apis上可见,所以我想使用支持方法:
somefab.setSupportBackgroundTintList(ColorStateList.valueOf(Color.GRAY));
Run Code Online (Sandbox Code Playgroud)
在这里我已经得到一个空指针异常.
java.lang.RuntimeException: Unable to start activity ComponentInfo{myprojectpath}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4077)
at android.app.ActivityThread.-wrap15(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1350)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable()' on a null object reference
at android.graphics.drawable.LayerDrawable$ChildDrawable.<init>(LayerDrawable.java:1723)
at android.graphics.drawable.LayerDrawable$LayerState.<init>(LayerDrawable.java:1792)
at android.graphics.drawable.RippleDrawable$RippleState.<init>(RippleDrawable.java:998)
at android.graphics.drawable.RippleDrawable.createConstantState(RippleDrawable.java:989) …Run Code Online (Sandbox Code Playgroud) android android-support-library floating-action-button android-support-design