2013-08-25 4 views
1

У меня есть следующий макет, который отображает изображение и текстовую строку:Добавить изображения динамически на основе выбора выбранного

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:gravity="center" > 

    <ImageView 
     android:id="@+id/ivIcon" 
     android:layout_width="@dimen/number_icon" 
     android:layout_height="@dimen/number_icon" 
     android:scaleType="fitXY" 
     android:layout_marginTop="@dimen/letter_icon_margin_top" /> 
    <Button 
     android:id="@+id/btnNumber" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_margin="5dp" 
     android:layout_weight="3" 
     android:text="" 
     android:gravity="center" 
     android:textSize="@dimen/word_size_text" 
     android:textColor="#000000" 
     android:textStyle="bold" 
     android:background="@drawable/borderaction" /> 
    </LinearLayout> 

ivIcon отображает изображения на основе пользовательского ввода. Он отлично работал при отображении одного изображения на букву. Но как я могу исправить вышеуказанный макет, чтобы он отображал количество изображений на основе выбора пользователя.

@dimen Используется для изменения размера изображения на основе экрана.

Например это то, что выглядит как когда я использую его для письма:

enter image description here

Для числа, если пользователь выбирает 5 дисплей должен быть:

enter image description here

Если пользователь выбирает 1, дисплей должен быть:

enter image description here

Объект, который устанавливает изображение для письма код:

ivLetterIcon = (ImageView) findViewById(R.id.ivIcon); 
ivLetterIcon.setImageResource(R.drawable.apple); 

Как бы я выполнить номерные изображения?

Было бы лучше иметь пустой макет без изображений и добавить ImageView в runtim в зависимости от числа и сосредоточить его? Таким образом, изображения (ы) сосредоточены на макете родительского представления?

ответ

1

Ну, у меня есть идея, возможно, вы можете попробовать это. Попробуйте использовать GridView для отображения количества яблок путем динамического изменения номеров столбцов и номеров строк в зависимости от экрана. Например, если gridView является GridView, а введенное число равно 11, вы можете это сделать.

gridView.setNumberOfColumns(5); 
gridView.setNumberOfRows(3); 

поэтому 5x3 может разместить 15 элементов, которые могут легко вписаться в 11 элементов.

Затем раздуйте пользовательский вид, содержащий Apple, в столбцы.

+0

только идет до 10, но это хорошее предложение. Я могу установить высоту и ширину GridLayout в соответствии с родительскими центрами и gridView.setNumberOfColumns (1) и gridView.setNumberOfRows (1) и добавить изображение и сделать это для друг друга. – Si8

+0

простой как это. :) – siriscac

+0

Нет такой вещи, как .setNumberOfRows в GridView. – Si8

1

Сделайте layout_height для ImageView фиксированную высоту

--edit--

int dp = TheFixedSize; 
Resources resources = context.getResources(); 
DisplayMetrics metrics = resources.getDisplayMetrics(); 
float px = dp * (metrics.densityDpi/160f); 
Imageview.setHeight(px); 
+0

Я проектирую для всех размеров экрана, поэтому использую @dimen, но спасибо :) – Si8

+1

Вы можете сделать это в коде, тогда он будет такого же размера на всех размерах экрана, как это (см. Править) – JWqvist

+0

Я понимаю, что вы имеете в виду. Я думаю, мне придется использовать GridLayout, а затем – Si8