【Android】问题记录2015-11-10

1.CardView边距问题:

◆ 注意不同 SDK 版本(低于 Lollipop 21)上的边距(Margin)效果
Google 在 Android Lollipop 中引入了 Material Design 设计中的阴影(Elevation)和 Z 轴位移,其目的就是突出界面中不同元素之间的层次关系。为了统一不同系统版本的视觉效果,Google 针对 SDK 21 以下的系统给 CardView 加入一个 Elevation 兼容(即 XML 中的 app:cardElevation 和 Java 代码中的 setCardElevation)。
然而,在低版本中设置了 CardElevation 之后 CardView 会自动留出空间供阴影显示,而 Lollipop 之后则需要手动设置 Margin 边距来预留空间,导致我在设置 Margin 在 Android 5.x 机器上调试好后,在 Kitkat 机器调试时发现边距非常大,严重地浪费了屏幕控件。
因此,我们需要自定义一个 dimen 作为 CardView 的 Margin 值:
创建 /res/value 和 /res/value-v21 资源文件夹于项目对应 Module 目录下,前者放置旧版本/通用的资源文件(了解的可以跳过),后者放置 21 及更高 SDK 版本的资源文件。
在 value 内的 dimen.xml 创建一个 Dimension ( 属性),随便命个名(如 xxx_card_margin)并填入数值 0dp。
接着在 value-v21 文件夹内的 dimen.xml 创建名字相同的 Dimension,并填入你期望的预留边距(一般和 CardElevation 阴影大小相同)
最后,在你布局中的 CardView 中设置 android:layout_margin=”@dimen/xxx_card_margin”
这样依赖就解决了低版本中边距过大或者视觉效果不统一的问题了。

更多cardView使用细节:here

2.ProgressBar 自定义,图片自适应问题:
英文外链
关键代码:

<ProgressBar  
    android:indeterminate="true" 
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true" 
    android:indeterminateDrawable="@drawable/custom_progress_background"
/> 

其中,xml文件:clip部分为关键代码


<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
      
    <item android:duration="100">
        <clip
            android:clipOrientation="horizontal"
            android:drawable="@drawable/loading_small_001"
            android:gravity="center">clip>
    item>
    <item android:duration="100">
        <clip
            android:clipOrientation="horizontal"
            android:drawable="@drawable/loading_small_002"
            android:gravity="left">clip>
    item>
    <item android:duration="100">
        <clip
            android:clipOrientation="horizontal"
            android:drawable="@drawable/loading_small_003"
            android:gravity="left">clip>
    item>
    ...

animation-list>
  1. cardView 改变背景色:

Use the property card_view:cardBackgroundColor:

.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="fill_parent"
    android:layout_height="150dp"
    android:layout_gravity="center"
    card_view:cardCornerRadius="4dp"
    android:layout_margin="10dp"
    card_view:cardBackgroundColor="#fff"
    >

你可能感兴趣的:(Android问题记录)