2013-08-26 5 views
0

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

Мой MainActivity:

package com.example.testting; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 
import android.widget.RelativeLayout.LayoutParams; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     LinearLayout ll = (LinearLayout) findViewById(R.id.llLayout); 
     for(int i=0;i<10;i++) 
     { 
       LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(R.dimen.num_icon, R.dimen.num_icon); 
       ImageView ii= new ImageView(this); 
       ii.setBackgroundResource(R.drawable.apple); 
       ii.setLayoutParams(layoutParams); 
       ll.addView(ii); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

Мой XML:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" 
    android:id="@+id/llLayout" 
    android:orientation="horizontal" 
    android:gravity="center" > 

</LinearLayout> 

Мой res/values/dimens файл для стандартного телефонного экрана:

<resources> 

    <!-- Default screen margins, per the Android Design guidelines. --> 
    <dimen name="activity_horizontal_margin">16dp</dimen> 
    <dimen name="activity_vertical_margin">16dp</dimen> 
     <dimen name="num_icon">55dp</dimen> 

</resources> 

Мой res/values/dimens файл для 7" экрана:

<resources> 

    <!-- 
     Customize dimensions originally defined in res/values/dimens.xml (such as 
     screen margins) for sw600dp devices (e.g. 7" tablets) here. 
    --> 

    <dimen name="num_icon">110dp</dimen> 

</resources> 

Мой res/values/dimens файл для 10" экрана:

<resources> 

    <!-- 
     Customize dimensions originally defined in res/values/dimens.xml (such as 
     screen margins) for sw720dp devices (e.g. 10" tablets) here. 
    --> 

    <dimen name="num_icon">160dp</dimen> 

</resources> 

Предполагается, дисплей 10 изображений с помощью размерной XML, но это не так. Я вижу следующее: enter image description here

ответ

1

1. R.dimen.some_value должен содержать Dimens, определенные в Рез/папке значения-XXXX.

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

+0

Я буду обновлять мой вопрос для лучшего понимания :) –

1

для вашего первого вопроса, то проверить это: dimens

а что касается второго вопроса, то проверить это: line break

+0

Пожалуйста, обновите свой ответ, чтобы содержать содержание того, что вы публикуете в , Если ссылки, на которые вы указываете, должны быть мертвыми, ваш ответ бесполезен. –

2

Держите llLayout ориентацию Ver Tical

LinearLayout ll = (LinearLayout) findViewById(R.id.llLayout); 
      for(int i=1;i<=10;i++) 
      { 
       LinearLayout linear=null; 
       if(i/5==0){ 

        if(linear!=null){ 

         LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
         ll.addView(linear,layoutParams); 
        } 
        linear = new LinearLayout(this); 
        linear.setOrientation(LinearLayout.HORIZONTAL); 
       } 
       LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams((int)getResources().getDimension(R.dimen.test), (int)getResources().getDimension(R.dimen.test)); 

       ImageView ii= new ImageView(this); 
       ii.setBackgroundResource(R.drawable.ic_launcher); 
       ii.setLayoutParams(layoutParams); 
       linear.addView(ii); 
      } 
+0

Я пытаюсь сделать горизонтальный. И ваш код работает, кроме экрана отображается значок 6, и я не вижу остальных:/ –

+0

Для 'if (linear! = Null) {LinearLayout.LayoutParams layoutParams = новый LinearLayout.LayoutParams (LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams .ОБЕРНУТЬ СОДЕРЖИМОЕ); ll.addView (линейный, layoutParams); } 'Eclipse говорит мне:' Dead code' –

1

Попробовать это Это показывает 5 изображений в строке каждой строки

LinearLayout ll = (LinearLayout) findViewById(R.id.llLayout); 
    LinearLayout linear=new LinearLayout(this); 
    for(int i=0;i<=10;i++) 
    { 

      if(i%5==0){ 

       LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
       ll.addView(linear,layoutParams); 
       linear = new LinearLayout(this); 
       linear.setOrientation(LinearLayout.HORIZONTAL); 
      }    
     LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams((int)getResources().getDimension(R.dimen.test), (int)getResources().getDimension(R.dimen.test)); 

     ImageView ii= new ImageView(this); 
     ii.setBackgroundResource(R.drawable.ic_launcher); 
     ii.setLayoutParams(layoutParams); 
     linear.addView(ii); 
    } 

    } 
+0

Так что держите 'llLayout' вертикально или горизонтально? –

+0

llLayout ориентация к вертикали – Pankaj

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