2017-01-27 3 views
1

У меня будет ImageView с левой стороны в RelativeLayout. Но с этим Java-кодом это не сработает. ImageView находится посередине от RelativeLayout.Android Studio: Почему бы не addRule() работать с RelativeLayout.LayoutParams?

RelativeLayout layout_hand = (RelativeLayout) main.findViewById(R.id.hand); 
ImageView view = new ImageView(main); 
view.setImageResource(R.mipmap.test_pokemon_cardback); 
view.setContentDescription("field"); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(R.dimen.card_height, R.dimen.card_width); 
params.addRule(RelativeLayout.ALIGN_PARENT_START, RelativeLayout.TRUE); 
view.setLayoutParams(params); 
layout_hand.addView(view); 

Когда я протестировал его с помощью xml, он отлично работает. Но я буду динамически добавлять это представление.

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/hand" 
    android:layout_below="@+id/layout_deck" 
    android:layout_toStartOf="@+id/layout_graveyard" 
    android:layout_toEndOf="@+id/layout_resource_deck"> 

    <ImageView 
     android:layout_width="@dimen/card_width" 
     android:layout_height="@dimen/card_height" 
     app:srcCompat="@mipmap/test_pokemon_cardback" 
     android:contentDescription="@string/field" 
     android:id="@+id/test" 
     android:layout_alignParentStart="true" /> 
</RelativeLayout> 

Надеюсь, вы можете мне помочь.

+0

Попробуйте это: 'RelativeLayout.LayoutParams PARAMS = (RelativeLayout.LayoutParams) вид .getLayoutParams();' – Yupi

+0

@Yupi PARAMS имеет нулевое значение, после этой линии – Ottaro1994

ответ

0

Я думаю, что это может помочь:

RelativeLayout layout_hand = (RelativeLayout)findViewById(R.id.hand); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    ImageView view = new ImageView(this); 
    view.setImageResource(R.mipmap.ic_launcher); 
    view.setContentDescription("field"); 
    layout_hand.addView(view, params); 
    RelativeLayout.LayoutParams lrp = (RelativeLayout.LayoutParams)view.getLayoutParams(); 
    lrp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); 
    view.setLayoutParams(lrp); 

Примечание Я использовал RelativeLayout.ALIGN_PARENT_BOTTOM только, чтобы сделать некоторые испытания и на дне появляется изображение. Вы можете настроить код в соответствии с вашими потребностями.

+0

В тот момент, когда я изменить высоту/ширину, то ImageView снова посередине. – Ottaro1994

0

Я решил свою проблему.

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams((int) getResources().getDimension(R.dimen.card_height), (int) getResources().getDimension(R.dimen.card_width)); 
Смежные вопросы