2

Я переношу приложение для Android, чтобы использовать конструкцию материалов. Чтобы проверить, правильно ли я сделал все, я создаю пустую операцию для тестирования некоторых элементов Material Design itens (FAB, поднятая кнопка, высота на представлениях, картах, списках и т. Д.).Android - высота не работает

Кнопки отображаются в порядке, но возвышения на представлениях нет. Я искал в интернете ответ, но не нашел его. Я не использую отступы, прозрачный фон, и т.д. Вот мой код:

значения-v21/styles.xml:

<resources> 

    <style name="AppThemeNoActionBar" parent="AppTheme"> 
     <item name="android:navigationBarColor">@color/colorPrimary</item> 
    </style> 

    <style name="AppTheme" parent="MyMaterialTheme.Base"> 
     <item name="android:windowContentTransitions">true</item> 
     <item name="android:windowAllowEnterTransitionOverlap">true</item> 
     <item name="android:windowAllowReturnTransitionOverlap">true</item> 
     <item name="android:windowSharedElementEnterTransition">@android:transition/move</item> 
     <item name="android:windowSharedElementExitTransition">@android:transition/move</item> 
    </style> 

    <style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="windowNoTitle">true</item> 
     <item name="windowActionBar">false</item> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
    </style> 

    <style name="Button" parent="Base.Widget.AppCompat.Button.Colored"> 
     <item name="android:backgroundTint">@color/colorAccent</item> 
    </style> 

    <color name="colorPrimary">#E88768</color> 
    <color name="colorPrimaryDark">#CC785C</color> 
    <color name="colorAccent">#E88768</color> 
    <color name="textColorPrimary">#000000</color> 
    <color name="windowBackground">#FFFFFF</color> 
    <color name="navigationBarColor">#E88768</color> 
</resources> 

макета v21/start_activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="@color/white" 
       xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <HorizontalScrollView 
     android:layout_width="match_parent" 
     android:layout_height="40dp" 
     android:layout_alignParentStart="true" 
     android:elevation="12dp" 
     android:translationZ="12dp" 
     android:id="@+id/scrollView"> 

    </HorizontalScrollView> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:layout_below="@+id/scrollView"> 

    </LinearLayout> 

</RelativeLayout> 

Может кто-нибудь мне помогает?

+0

Я не слишком много перепутал с рельефами или сдвигами оси z, но является ли добавочной добавкой к переводу? Если нет, не будет ли ваш перевод Z и высоту отменять друг друга. Опять же, на самом деле это совсем не смущало. Больше вопроса, чем предложение: P – zgc7009

ответ

6

Попробуйте установить цвет фона/вытяжку к вашим HorizontalScrollView:

android:background="@android:color/white" 

Это представляется необходимым для тени быть нарисована.

+0

Работал! Это ошибка? –

+2

Я думаю, что это на самом деле функция :) Причина в том, что если вы не укажете фон, это неявно прозрачно. Тень, созданная свойством высоты, адаптируется к фону с прозрачностью, что означает, что тень относится, например, к закругленным углам. Из-за этого, если фон полностью прозрачен, тень не генерируется. – dthulke

1

Если elevation не работает, вы можете использовать трюк, как положить содержимое в CardView, а затем установка:

card_view:cardElevation="2dp" 

Или:

card_view:cardCornerRadius="4dp" 

Для углов.

Это самый лучший способ, однако вы можете увидеть elevations на просмотр Android Студия «s, но на самом деле, все они не работают, когда вы компилируется приложение или он работает на эмуляторе или реальное устройство. Поэтому в этих ситуациях лучше использовать это CardView.

Для exmaple:

<android.support.v7.widget.CardView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clickable="true" 
     android:foreground="?android:attr/selectableItemBackground" 
     card_view:cardCornerRadius="4dp" 
     card_view:cardElevation="2dp"> 

     <HorizontalScrollView 
      android:id="@+id/scrollView" 
      android:layout_width="match_parent" 
      android:layout_height="40dp" 
      android:layout_alignParentStart="true" 
      android:translationZ="12dp"> 

     </HorizontalScrollView> 
    </android.support.v7.widget.CardView> 
+0

Эта работа, но это обходное решение? В примерах для Android они не применяют «CardView» для создания теней. –

+0

Да, например, вы можете использовать 'Button' на preLollipop и с теневым дизайном googleplay, но вы не можете видеть кнопки shadow или другие вещи, тогда нам нужно использовать «CardView», как мой ответ. Просто подумайте об этом, как о другом способе сделать это :) – Mohsen

Смежные вопросы