3

新しい CardView の使用に問題があります

それが私の現在の状況です: CardView を使用して、すべてのデバイス (ロリポップ前も) にフローティング アクション ボタンを提供したいと考えています。

私のアクティビティのレイアウトは次のようになります

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:cardview="http://schemas.android.com/apk/res-auto"
         android:id="@+id/container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="#cdcdcd"
         android:focusable="false">

<include layout="@layout/toolbar"/>


<android.support.v7.widget.CardView
    android:layout_width="58dp"
    android:layout_height="58dp"
    cardview:cardPreventCornerOverlap="true"
    android:layout_gravity="bottom|right"
    android:layout_marginBottom="16dp"
    android:layout_marginRight="18dp"
    cardview:cardCornerRadius="29dp"
    cardview:cardBackgroundColor="?attr/colorPrimary">

    <ImageView
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_gravity="center"
        android:layout_margin="12dp"
        android:src="@android:drawable/ic_menu_edit"/>
</android.support.v7.widget.CardView>

Nexus 5 (4.4.4) でアプリを実行すると、画面は次のようになります。 MainActivity with FAB - カスタム cardView コーナー半径なし

これをxmlに設定してcardElevationを設定したい

cardview:cardElevation="8dp"

アプリを起動すると、ボタンは次のようになります (円ではなくなります)。 MainActivity with FAB - カスタム cardView コーナー半径 - 8 dp に設定

カードの高さを設定すると、ビューの寸法にも影響するようです... 画像 1 をよく見ると、このボタンも完全な円ではないことがわかります。

それを理解する方法はありますか?私もこれを設定しようとしました

cardview:cardPreventCornerOverlap="false"

しかし、それも影響はありません

みんなありがとう :)

4

2 に答える 2

0

古いデバイスでのシャドウ効果がどうしても必要な場合は、この MaterialDesign ライブラリの FAB を使用してみてください。

ライブラリはhttps://github.com/navasmdc/MaterialDesignLibraryにあります。

<com.gc.materialdesign.views.ButtonFloat
            android:id="@+id/buttonFloat"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:layout_marginRight="24dp"
            android:background="#1E88E5"
            materialdesign:animate="true"
            materialdesign:iconDrawable="@drawable/ic_action_new" />

または、drawables フォルダーに独自のシャドウ リソースを作成し、次のようにボタンの下に形状を追加することもできます。

<shape android:shape="oval"
 xmlns:android="http://schemas.android.com/apk/res/android">

 <solid android:color="@color/black_alpha"/>
 <corners android:radius="20dip"/>

そして、ボタンと影を含むレイヤー リスト リソースを作成します。

<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shadow"/>
<item
 android:drawable="@drawable/button"
 android:bottom="4px" />  
 </layer-list>
于 2015-05-05T14:45:49.883 に答える