2016-12-20 4 views
1

Current Playbar У меня есть FrameLayout, в котором есть панель воспроизведения, которую я использую, которая отображает информацию о музыке, воспроизводимой вместе с переключателями. По какой-то причине я не могу получить прописку в верхней части рамки, чтобы уйти. Я попытался сделать маржи/paddings 0dp всех элементов и всего макета программным путем и через XML, но ничего не работает. Я предполагаю, что это просто естественное поведение, встроенное в FrameLayout. Я также попытался установить FrameLayout на ту же желаемую высоту (56dp/dimen/playbar_size), но все еще есть пробел. Margin/padding в FrameLayout не уходит

<SeekBar 
    style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/progress" 
    android:layout_marginLeft="@dimen/playbar_size" 
    android:layout_marginTop="-8dp" /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="45dp" 
    android:layout_marginLeft="64dp" 
    android:orientation="horizontal" 
    android:layout_gravity="right|bottom"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_weight="1" 
     android:gravity="center_vertical" 
     android:orientation="vertical" 
     android:paddingTop="5dp"> 

     <TextView 
      android:id="@+id/title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#fff" 
      android:textSize="14dp" 
      android:singleLine="true" 
      android:lines="1" 
      android:maxLines="1" 
      android:ellipsize="end" 
      android:textStyle="bold" /> 

     <TextView 
      android:id="@+id/subtitle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#fff" 
      android:textSize="12dp" 
      android:singleLine="true" 
      android:lines="1" 
      android:maxLines="1" 
      android:ellipsize="end" 
      android:layout_marginLeft="8dp" /> 
    </LinearLayout> 

    <ImageButton 
     android:id="@+id/toggle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:soundEffectsEnabled="false" 
     android:padding="12dp" 
     app:srcCompat="@drawable/ic_pause_dark" 
     android:layout_gravity="bottom" 
     android:background="@android:color/transparent" /> 

    <ImageButton 
     android:id="@+id/next" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@android:color/transparent" 
     android:soundEffectsEnabled="false" 
     android:padding="12dp" 
     app:srcCompat="@drawable/quantum_ic_skip_next_white_24" 
     android:layout_gravity="bottom" /> 
</LinearLayout> 

<ImageView 
    android:id="@+id/art" 
    android:layout_width="@dimen/playbar_size" 
    android:layout_height="@dimen/playbar_size" 
    android:layout_gravity="left|top" 
    android:layout_marginTop="0dp" /> 

</FrameLayout> 

Желаемый вид, без заполнения и SeekBar всего пути сверху - это фактическая высота его должен быть.

Desired view, with no padding and seekbar all the way the top – this is actual height it is supposed to be

ответ

0

Я понял это, выполнив две вещи. Вместо того, чтобы устанавливать фон в цвет в XML, я создал новый объект формы, в котором было заполнено 0 и нужный цвет.

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="@color/colorAccentBrightOpaque"/> 
<padding 
    android:bottom="0dip" 
    android:left="0dip" 
    android:right="0dip" 
    android:top="0dip"/> 
</shape> 

Тогда я программно установить фон с помощью Java кода ресурса формы и программно задать отступ на 0, а также.

playbar.setBackgroundResource(R.drawable.playbar_background); 
playbar.setPadding(0,0,0,0); 
0

Я считаю, что набивка из-за этого:

<ImageView 
android:id="@+id/art" 
android:layout_width="@dimen/playbar_size" 
android:layout_height="@dimen/playbar_size" 
android:layout_gravity="left|top" 
android:layout_marginTop="0dp" /> 

Этот вид изображения покрывает верхнюю часть макета кадра, так как вы поставили гравитацию

android:layout_gravity="left|top" 

Могли попробуйте удалить это и проверить?

+0

Я пробовал это, и он также не исправил его. Я снова попытался убедиться, и он все равно не сработает: / – osharifali