我已经开始使用Material Design编程,我面临着非常奇怪的图形错误.
基本上,活动A包含带有RecyclerView的片段.2活动B中的3个碎片也包含RecyclerView.一旦我从活动B(其中带有RecyclerView的片段处于活动状态)返回到活动A,通过按下导航按钮,以下是发生的情况:
当我滚动一下时,一切都在修复.
我正在使用最新的支持库(21.0.3)和构建工具.Android 5.0和5.0.1上出现Bug.Logcat不会报告任何错误或警告.
我不会覆盖任何活动交易,我也不使用任何Paint,Drawable等.任何人都面临这个错误,任何想法如何解决它?
我正在使用Support Design Library rev.23.0.1(以及22.2.1).问题是在活动方向改变之后,如果已经滚动了RecyclerView(放置在片段中),它会丢失其顶部填充,这可能等于StatusBar Height + AppBar Height(如图所示).
这是我的活动布局
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/discount_activity_app_bar_layout"
android:layout_width="match_parent"
android:layout_height="256dp"
app:layout_behavior="com.moskart.mosfake.widget.AppBarLayoutBehavior"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:fitsSystemWindows="true"
>
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsingToolbarLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="@dimen/expanded_toolbar_title_margin_start"
app:expandedTitleMarginBottom="96dp"
app:expandedTitleTextAppearance="@style/TextAppearance.Design.CollapsingToolbar.Expanded"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/hero_image"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.7"
android:fitsSystemWindows="true"
/>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
</android.support.v7.widget.Toolbar>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:behavior_overlapTop="64dp"
android:fitsSystemWindows="true" >
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment"
android:name="com.moskart.mosfake.fragment.DiscountFeedFragment"
tools:layout="@layout/fragment_discount_feed"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
一个简单的片段包含RecyclerView
<LinearLayout 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:orientation="vertical"
tools:context="com.moskart.mosfake.fragment.DiscountFeedFragment"
> …Run Code Online (Sandbox Code Playgroud) android android-recyclerview android-coordinatorlayout android-support-design
我正在使用compile 'com.android.support:design:23.1.1'并android.support.design.widget.FloatingActionButton创建一个FAB.
当背景色调颜色为白色时,高程(阴影)非常明显.
但对于其他颜色,海拔不可见.
这是我的代码:
<android.support.design.widget.FloatingActionButton
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/create_floating_button"
app:elevation="6dp"
app:borderWidth="0dp"
android:clickable="true"
app:backgroundTint="@color/colorAccent"
app:rippleColor="@color/colorAccentLight"
android:layout_margin="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)
除了这个问题,即使是白色,按钮似乎不像谷歌材料设计规范.
例如检查这个(阴影方向向下):
我究竟做错了什么?
添加后无法构建项目
compile 'com.android.support:design:24.2.0'
Run Code Online (Sandbox Code Playgroud)
继续发出以下错误:
似乎,问题是支持矢量drawables.在某处某些属性被添加两次.
例如,内置的values.xml文件包含:
<declare-styleable name="AppBarLayout_LayoutParams"><attr name="layout_scrollFlags"><flag name="scroll" value="0x1"/><flag name="exitUntilCollapsed" value="0x2"/><flag name="enterAlways" value="0x4"/><flag name="enterAlwaysCollapsed" value="0x8"/></attr><attr format="reference" name="layout_scrollInterpolator"/></declare-styleable>
Run Code Online (Sandbox Code Playgroud)
和
<declare-styleable name="AppBarLayout_Layout"><attr name="layout_scrollFlags">
<flag name="scroll" value="0x1"/>
<flag name="exitUntilCollapsed" value="0x2"/>
<flag name="enterAlways" value="0x4"/>
<flag name="enterAlwaysCollapsed" value="0x8"/>
<flag name="snap" value="0x10"/>
Run Code Online (Sandbox Code Playgroud)
我已将此添加到gradle文件中:
compile 'com.android.support:cardview-v7:24.2.0' + '@aar'
compile 'com.android.support:recyclerview-v7:24.2.0' + '@aar'
compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.android.support:design:24.2.0'
Run Code Online (Sandbox Code Playgroud) 我创建底部导航栏,我需要隐藏标题和显示图标,但当我用空字符串写标题时,图标和底部之间有很大的空间,它只是用空字符串替换字符串,我做了很多搜索,但我没有找到解决方案所以任何帮助
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.easyschools.student.HomeActivity">
<FrameLayout
android:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/navigation"
android:layout_alignParentTop="true">
</FrameLayout>
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:background="@android:color/white"
android:layout_alignParentBottom="true"
app:menu="@menu/navigation"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
navigation.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/nav_messages"
android:icon="@drawable/msg_icon"
android:title=""/>
<item
android:id="@+id/nav_home"
android:icon="@drawable/home_icon"
android:title=""
android:checked="true"/>
<item
android:id="@+id/nav_notify"
android:icon="@drawable/notify_icon"
android:title=""/>
<item
android:id="@+id/nav_my_profile"
android:icon="@drawable/user_icon"
android:title=""/>
</menu>
Run Code Online (Sandbox Code Playgroud) 我遇到了新的Android Design Support Librar(http://android-developers.blogspot.com.ar/2015/05/android-design-support-library.html)的一个奇怪问题.如果我在AppBarLayout中放置其他内容(如LinearLayout)以及ToolBar并切换该内容的可见性,那么切换片段将在片段内容的顶部显示死区.
当切换内容的可见性时,AppBarLayout似乎没有正确调整父级CoordinatorLayout的大小.我的CoordinatorLayout包含在DrawerLayout中.我想根据显示的片段切换AppBarLayout中额外LinearLayout的可见性.
这是MainActivity的main.xml文件:
<android.support.v4.widget.DrawerLayout
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"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout
android:layout_height="match_parent"
android:layout_width="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_vertical"">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start"
android:text="Hello"/>
</LinearLayout>
</android.support.design.widget.AppBarLayout>
<FrameLayout
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/drawer"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud) android material-design android-coordinatorlayout android-support-design android-appbarlayout
TextInputLayout在support-library版本23.1.0中引入了一个很好的计数器函数 - 不幸的是,浮动提示在layout_height中变得非常高.有没有办法将柜台带到顶部(与浮动标签高度相同?)
android android-support-library material-design android-design-library android-support-design
我试图使用点击按钮上的ndroid-support-library 23.2调用BottomSheet .它工作正常,但没有采取全高度.它位于下方AppBarLayout.我在Android文档上找不到任何解决方案
这是我的屏幕布局
这是我的代码.
activity_main.xml中
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity">
<android.support.design.widget.AppBarLayout
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:layout_scrollFlags="snap|enterAlwaysCollapsed"
app:popupTheme="@style/AppTheme.PopupOverlay" />
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
app:tabGravity="fill"
app:tabIndicatorColor="#5be5ad"
app:tabIndicatorHeight="4dp"
app:tabMode="fixed" />
</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="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_email" />
<!-- BottomSheet Layout -->
<FrameLayout
android:id="@+id/bottom_sheet"
android:layout_width="match_parent"
android:layout_height="fill_parent"
app:behavior_hideable="true"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
MainActivity.java
View bottomSheet;
private BottomSheetDialog mBottomSheetDialog;
private …Run Code Online (Sandbox Code Playgroud) android android-layout android-support-library material-design android-support-design
我已将Android支持库升级23.1.1到,23.2.1并且AppBarLayout setExpanded方法不再像过去那样工作.
我有CollapsingToolbarLayout占据整个屏幕,在它下面有NestedScrollView持有其他视图.向上和向下滑动会完全折叠/展开工具栏布局,从而显示或隐藏带内容的滚动视图.
手动滑动工作正常,但我也有按钮触发AppBarLayout setExpanded方法与true/false参数自动折叠/扩展工具栏.使用版本,23.1.1此方法也可正常工作,但23.2.1只有第一次折叠工具栏将在下方滚动视图中显示内容,所有后续折叠都不会.setExpanded(true)折叠工具栏时的触发方法将显示我的滚动视图的内容,并且扩展动画将按照预期的方式工作.
可以在API为22或更低的设备/仿真器上重现问题.
我有什么想法可以在23.2.1库中修复这种行为?
展示上述行为的基本示例:
MainActivity.java
package com.test.displaym;
import android.support.design.widget.AppBarLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void btnClick(View v)
{
View iv = findViewById(R.id.image_view);
AppBarLayout bar = (AppBarLayout) findViewById(R.id.app_bar);
if (iv.getTop() == 0) bar.setExpanded(false);
else bar.setExpanded(true);
}
}
Run Code Online (Sandbox Code Playgroud)
activity_main.xml中 …
我想用TabLayout用TabItem用下面的代码:
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/color_primary"
app:tabGravity="fill"
app:tabIndicatorColor="@color/white"
app:tabMode="fixed"
app:tabSelectedTextColor="@color/white"
app:tabTextColor="@color/gray_light">
<android.support.design.widget.TabItem
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:icon="@drawable/ic_language" />
<!-- other tabs ... -->
</android.support.design.widget.TabLayout>
Run Code Online (Sandbox Code Playgroud)
这是正确的向我展示图标:
但问题是当我想添加我TabLayout的时候ViewPager,使用以下代码,所有这些代码都存在且可点击但却消失了.我错过了什么?
MyPagerAdapter adapter = new MyPagerAdapter(getFragmentManager());
pager.setAdapter(adapter);
tabLayout.setupWithViewPager(pager);
Run Code Online (Sandbox Code Playgroud)
这是结果:
android material-design android-support-design android-tablayout