2016-07-17 20 views
0

Ich versuche, eine Ansicht mehrmals aufzublähen. Meine Ansicht besteht aus einer Bildansicht und einer Textansicht darunter und platziert sie an einer bestimmten Position.Mehrere Ansichten erstellen

Unten ist mein item.xml die ich mehrmals am Aufpumpen:

mein Code
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="100dp" 
    android:background="@android:color/holo_blue_dark" 
    android:layout_height="100dp"> 

    <ImageView 
     android:layout_gravity="center" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:background="@mipmap/ic_launcher" 
     android:id="@+id/imageView"/> 

    <TextView 
     android:gravity="center" 
     android:layout_width="match_parent" 
     android:layout_height="20dp" 
     android:textSize="12sp" 
     android:textStyle="bold" 
     android:text="Large Text" 
     android:id="@+id/textView" /> 
</LinearLayout> 

hier mit aufblasen ist:

for (int i = 0; i < 1; i++) { 

    final View v = linf.inflate(R.layout.item, null); 
    TextView tvs = (TextView) v.findViewById(R.id.textView); 
    ImageView ivs = (ImageView) v.findViewById(R.id.imageView); 
    tvs.setText(i+""); 

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100, 100); 

    int w = (mWidth/2)-50; 
    int h =(mHeight/2)-50; 
    params.leftMargin = w; 
    params.topMargin = h; 
    Log.e("W-H", mWidth + "-" + mHeight); 
    rr.addView(v,params); 
} 

ich in der Lage bin, den item.xml zu platzieren erfolgreich, aber es passt Bildschirm nicht richtig Ich habe Höhe und Breite festgelegt 100dp.

Hier ist, was ich bin immer here

+0

'Ich habe Höhe eingestellt und feste Breite 100dp.' Nicht wirklich. This 'RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams (100, 100);' ist ** Pixel **, nicht ** dp ** s –

Antwort

0

Der Konstruktor für LayoutParams in Pixel, so dass Sie zu dps konvertieren müssen es auf dem Bildschirm korrekt angezeigt werden soll. Dies kann wie in this stackoverflow answer erreicht werden:

int width_dps = 100; 
int height_dps = 100; 
final float scale = MainActivity.this.getResources().getDisplayMetrics().density; 
int width_pixels = (int) (width_dps * scale + 0.5f); 
int height_pixels = (int) (height_dps * scale + 0.5f); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width_pixels, height_pixels); 

Alternativ, wenn Sie eine feste Größe verwenden, können Sie Ihre xml aktualisieren wrap_content, damit ordnungsgemäß funktionieren. Sie werden die LinearLayout params werden überschrieben, so können Sie Ihre Subviews aktualisieren:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 

und subview aktualisieren (android:layout_width="100dp"):

<TextView 
    android:gravity="center" 
    android:layout_width="100dp" 
    android:layout_height="20dp" 
    android:textSize="12sp" 
    android:textStyle="bold" 
    android:text="Large Text" 
    android:id="@+id/textView" /> 
Verwandte Themen