2013-09-26 3 views
2

У меня есть 2-мерная. массив изображений. Они программно настроены на RelativeLayout. Но когда я запускаю приложение, они просто не появляются. Это мой код:ImageViews набор программно не отображается

private void setMap(ImageView[][] fields){ 
    RelativeLayout relLay = (RelativeLayout) findViewById(R.id.screen); 
    OnClickListener listener = new MyOnClickListener(); 
    for (int i = 0; i < numFieldsHeight; i++){ 
     for (int j = 0; j < numFieldsWidth; j++){ 
      ImageView img = new ImageView(MapActivity.this); 
      img.setImageResource(R.drawable.map); 
      RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      if (j != 0) 
       params.addRule(RelativeLayout.RIGHT_OF, fields[i][j-1].getId()); 
      else 
       params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE); 
      if (i != 0) 
       params.addRule(RelativeLayout.BELOW, fields[i-1][j].getId()); 
      else 
       params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
      params.height = fieldLength; 
      params.width = fieldLength; 
      img.setVisibility(View.VISIBLE); 
      img.setId(getFieldId(j,i)); 
      img.setOnClickListener(listener); 
      fields[i][j] = img; 
      relLay.addView(fields[i][j], params); 
     } 
    } 
} 

и

<?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="#000000" > 

    <RelativeLayout 
     android:id="@+id/relLayDiffSeekBar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     ... 

    </RelativeLayout> 

    <RelativeLayout 
     android:id="@+id/screen" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:background="#222222" > 

    </RelativeLayout> 

</RelativeLayout> 

Дополнительные атрибуты "экрана" RelativeLayout устанавливаются в коде. Но это работает, я вижу RelativeLayout, просто отсутствуют ImageViews.

Исключений нет. Пожалуйста, помогите мне!

------! Редактировать! ------

Прошу прощения, этот код на самом деле работает. Проблема в том, что я забыл установить переменную fieldLength на что-то отличное от 0. Большое спасибо за вашу помощь! :)

+1

Что Компоновка делать вам хочу иметь? Это похоже на GridView, так почему же вы не используете GridView? Возможно, relLay.invalidate() покажет добавленные изображения. –

+0

Опубликовать XML-файл деятельности пожалуйста –

+0

invalidate() не помогает – Garrarufa

ответ

0
Drawable d = getResources().getDrawable(R.drawable.map); 
d.setBounds(0, 0, 50, 50); 
img.setImageDrawable(d); 
+0

сожалению, это ничего не меняет – Garrarufa

+0

попробуйте вызвать relLay.invalidateViews() после того, как все сделано. – Autocrab

+0

невозможно, эта функция не существует. – Garrarufa

0
public void horizontalScrollGalleryLayout() { 
    sv=new HorizontalScrollView(this); 
    LinearLayout llh = new LinearLayout(this); 
    llh.setOrientation(LinearLayout.HORIZONTAL); 
    LinearLayout.LayoutParams layoutParamsTV = new LinearLayout.LayoutParams(90,90); 
    LinearLayout.LayoutParams layoutParamsLL = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    LinearLayout.LayoutParams layoutParamsLLD = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    layoutParamsTV.setMargins(10, 5, 5, 5); 
    for(int k=0;k<6;k++) 
    { 
     LinearLayout llv = new LinearLayout(this); 
     for (int i=0; i<4; i++) { 
      llv.setOrientation(LinearLayout.VERTICAL); 
      img=new ImageButton(this); 
      try { 
       img.setBackgroundResource(integerIDs[total]); 
      } catch (Exception e) { 

       e.printStackTrace(); 
      } 
      llv.addView(img, layoutParamsTV); 
     } 
     llh.addView(llv, layoutParamsLL); 
     llh.setBackgroundColor(Color.TRANSPARENT); 
    } 
    sv.setBackgroundColor(Color.GRAY); 
    sv.addView(llh, layoutParamsLLD); 
    setContentView(sv); 

} 

Это может быть один из решения ... для создания сетки Матрицы для вас проблемы .try это ... любая проблема, дайте мне знать

+0

Я пробовал это, но все та же проблема. Я изменил все ImageViews на кнопки и пробовал с ним код, но я все еще не вижу их. – Garrarufa

+0

проверить править, это создаст матрицу с динамической скроллировкой сетки 6 * 4 – nitesh

+0

На самом деле я не хочу использовать GridView. Это довольно сложно для того, что я хочу. Мне нужно поле не изменяющегося числа квадратичных кнопок, которые расположены рядом друг с другом без пробелов между ними. Это поле может не прокручиваться, каждая кнопка должна быть видимой и должна оставаться в одном месте все время. Я хочу, чтобы это выглядело как одно изображение, но каждая кнопка должна быть окрашена и щелкнута независимо. – Garrarufa

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