2016-01-26 2 views
8

FrameLayout hat die Attribute android:foreground, android:foregroundGravity und android:measureAllChildren. Ich habe diese Attribute ausprobiert, konnte aber nicht herausfinden, wie sie das Aussehen des Layouts beeinflussen oder wie sie funktionieren.Wie beeinflussen 'android: foreground' und 'android: foregroundGravity' in FrameLayout das Aussehen?

Ich habe gegoogelt, konnte aber keine Hilfe mit diesen Attributen finden. Bitte geben Sie mir einen Link an den ich verweisen kann oder helfe mir mit einem Beispiel. Dank

Antwort

7

android:foreground Punkte in den Vordergrund, die Ihre Framelayout Bedürfnisse zu all seinen Kindern

android:foregroundGravity Punkte der Schwere dieses Vermögenswertes zu ziehen, wenn das Asset ein ziehbar ist. Das heißt, wenn Sie verwenden

android:foreground="@android:drawable/bottom_bar" 

Dann wird Ihr ziehbar zu all seinen Kindern gezogen wird, und es ist in der Mitte des Framelayout

android:measureAllChildren : positioniert bestimmt, ob alle Kinder oder auch nur diese in der Messung VISIBLE oder INVISIBLE Zustand beim Messen. Der Standardwert ist false. Das heißt, wenn es auf false gesetzt ist, dann werden alle Elemente im GONE Zustand nicht berücksichtigt, wenn die Messphase Framelayout umläuft.

Hoffe, dass Ihre Frage beantwortet.

+0

Erklärung für 'android: Vordergrund' und' android: foregroundGravity' ist p perfekt, aber ich habe nicht bekommen, wie man 'android: measureAllChildren:', oder warum zu verwenden. Es wird eine große Hilfe sein, wenn Sie ein Beispiel für seine Arbeit geben können. Danke vielmals. – SimplyProgrammer

+0

'android: measureAllChildren' hat definitiv keine Auswirkungen auf dieses Layout. –

1

Wenn messagechildren auf "true" gesetzt ist, wird die tatsächliche Breite und Höhe des Rahmenlayouts angezeigt, selbst wenn die Sichtbarkeit der Ansichten nicht mehr gewährleistet ist. Zum Beispiel

<?xml version="1.0" encoding="utf-8"?> 
 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 
    android:id="@+id/myframe" 
 
    android:orientation="vertical" android:layout_width="wrap_content" 
 
    android:layout_height="wrap_content" 
 
    android:measureAllChildren="true" 
 
    > 
 
    <ImageView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:visibility="gone" 
 
     android:src="@drawable/ic_launcher"/> 
 

 
</FrameLayout>

Unten ist der Code von MainActivity.java. Wenn wir Toast verwenden, um Höhe und Breite auf dem Bildschirm anzuzeigen.

public class MainActivity extends AppCompatActivity { 
 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.myframe_activity); 
 
     FrameLayout frame=(FrameLayout)findViewById(R.id.frame); 
 
     frame.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); 
 
     int width = frame.getMeasuredWidth(); 
 
     int height = frame.getMeasuredHeight(); 
 
     Toast.makeText(getApplicationContext(),"width="+width+" height="+height,Toast.LENGTH_SHORT).show(); 
 

 
    } 
 

 
}

, wenn wir die App im Emulator die Ausgabe in Form von Toast Nachricht laufen wird wie folgt sein: width = 72 height = 72

Nun, wenn wir das ändern Wert von measureAllChildren to false dann Toast Nachricht Ausgabe Frame Layout Breite und Höhe wird sein: width = 0 height = 0

Verwandte Themen