2014-02-21 3 views
0

У меня есть макет, который имеет два компонента, фоновое изображение и изображение «значок», иконка должна отображать изображение в центре макета и фона занимает весь экран. когда я устанавливаю высоту и ширину на 0dp значка для оптимизации макета, тогда вручную задайте высоту/ширину кода, который будет отображаться, но в левом верхнем углу макета. Почти как она игнорирует центр в родительском атрибутеImageView wont center в родительском макете, когда размер задан вручную

<?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" > 

    <ImageView 
     android:id="@+id/ivBackground" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scaleType="centerCrop" /> 



    <TextView 
     android:id="@+id/tvUsername" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/ivIcon" 
     android:layout_centerHorizontal="true" 
     android:fontFamily="sans-serif-light" 
     android:shadowColor="#b3000000" 
     android:shadowDx="3" 
     android:shadowDy="3" 
     android:shadowRadius="3" 
     android:textAllCaps="false" 
     android:textColor="@color/white" 
     android:textSize="25sp" /> 

    <ImageView 
     android:id="@+id/ivIcon" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_centerInParent="true" 
     android:adjustViewBounds="true" /> 



</RelativeLayout> 

Этот макет из пункта списка следует, так позже, как только я сделал некоторые измерения я установить высоту/ширин

viewHolder.ivIcon.setLayoutParams(new RelativeLayout.LayoutParams(iconWidth, iconWidth)); 

So изображение отображается, но в левом верхнем углу я чувствую, что мне не хватает чего-то очевидного.

+0

Возможно, я уйду по касательной; попробуйте установить значок как drawableBottom для текстового просмотра. Вы сможете удалить дополнительное изображение и оптимизировать макет. – Vino

+0

Не думал об этом, больно дайте ему попробовать. Однако нашел решение моего первоначального вопроса. Благодарю. – Brian

ответ

1

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

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(iconWidth, iconWidth); 
params.addRule(RelativeLayout.LayoutParams.CENTER_IN_PARENT); 
viewHolder.ivIcon.setLayoutParams(params); 
+0

Что сделал. Я не знал, что параметры настройки в коде перезаписывают другие параметры макета. – Brian

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