2016-07-28 5 views
0

Ich füge Ansichten programmatisch in FrameLayout:Ansichten sind unsichtbar, nachdem sie in Viewgroup hinzugefügt wurde

public class PixelGridView extends FrameLayout { 
... 
    public void addViewWithoutCoords(TableView view, int column, int row) { 
      float x = column * mCellSideSize; 
      float y = row * mCellSideSize; 

      FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 
         ViewGroup.LayoutParams.WRAP_CONTENT); 
       view.setLayoutParams(lp); 

      view.setLeft(0); 
      view.setTop(0); 

      view.setX(x); 
      view.setY(y); 
      view.setVisibility(VISIBLE); 
      addView(view); 
     } 
... 
} 

Doch alle sind sie irgendwie unsichtbar. getChildCount() Rückgaben zählen mit allen von ihnen. getVisibility() für jede hinzugefügte Ansicht gibt auch VISIBLE zurück.

Ich kann solche Ansichten von einem anderen ViewGroup in meine Framelayout ziehen und wenn ich dies tue, werden alle früher hinzugefügten Ansichten sichtbar.

view Layout-Datei:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 
    <ImageView 
     android:id="@+id/ivTable" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true"/> 
    <EditText 
     android:id="@+id/ivTableName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:background="@color/style_table_grey" 
     android:textColor="@android:color/white"/> 
</RelativeLayout> 

Auch wenn ich sichtbar, ohne drag alles werden neue Ansicht hinzuzufügen.

Antwort

1

Die Artikelansicht der FrameLayout und RelativeLayout kann sich überschneiden. Wenn sich zwei Artikelansichten an denselben Positionen befinden wie FrameLayout, wird der erste geladene Artikel durch den späteren Artikel abgedeckt.

+0

Meinst du 'RelativeLayout' Ansichten können unter' FrameLayout' sein? –

+0

Sie haben meinen Tag gemacht)) Ich habe Code in "ViewTreeObserver.OnGlobalLayoutListener()" platziert und das ist es) –

+0

Ich meine alle Artikel Ansichten, die in der 'RelativeLayout' oder' FrameLayout' werden überlappt oder corvered von wenn Sie sind in der gleichen Position. – DysaniazzZ

0

Versuchen Sie die Show Layout Grenzen in Entwickler-Option Ihrer Android-Geräte einzuschalten, und finden Sie die Position Ihres Artikels.

+0

Es zeigt, dass keine Ansicht in meinem Container ist (aber getChildCount() gibt sie zurück). Ich habe versucht, invalidate() aufzurufen, aber es hat nicht geholfen –

Verwandte Themen