2016-01-26 11 views
8

FrameLayout, android:foreground, android:foregroundGravity ve android:measureAllChildren özniteliklerine sahiptir. Bu öznitelikleri denedim, ancak düzenin görünümünü veya nasıl çalıştıklarını nasıl etkilediklerini çıkaramadım.FrameLayout'ta 'android: ön plan' ve 'android: foregroundGravity' nasıl görünür?

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:foreground="@android:color/holo_blue_dark" 
android:foregroundGravity="center" 
android:measureAllChildren="true" 
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="com.example.framelayoutdemo.MainActivity" > 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/hello_world" /> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@android:drawable/btn_dialog" /> 

</FrameLayout> 

Ben googled ettik, ancak bu öznitelikleri ile ilgili bir yardım bulamadık. Lütfen bana bir örnekle başvurabileceğim veya yardımcı olabileceğim bir bağlantı verin. Teşekkür o varlığın çizilebilir olup olmadığını Framelayout ihtiyaçları,

android:foregroundGravity puan o varlığın yerçekimi için tüm çocukların üstüne çizim yapma ön plana

cevap

7

android:foreground puan. Eğer çekilebilir tüm çocukların üzerine çizilir ve tüm çocukları ya da sadece bu olmadığını ölçmek için belirler Framelayout

android:measureAllChildren : merkezinde konumlandırılmış

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

Sonra kullanıyorsanız Bunun anlamı Ölçerken VISIBLE veya INVISIBLE durumu. Varsayılanlar yanlıştır. Bu, eğer false olarak ayarlanırsa, Framelayout'un ölçüm aşaması etrafta dolaştığı zaman GONE durumundaki tüm elemanlar dikkate alınmaz demektir.

Sorunuzu cevapladığınızı umuyorum.

+0

Açıklama android için: ön plan ve android: foregroundGravity' p erfect, ama 'android: measureAllChildren:', ya da neden kullanmak için kullanmadım. Çalışması için örnek ve sağlayabilirseniz çok yardımcı olacaktır. Çok teşekkürler. – SimplyProgrammer

+0

'android: measureAllChildren' kesinlikle bu düzende bir etkisi yoktur. –

1

Eğer ölçüler “doğru” olarak ayarlanmışsa, görünüm görünürlüğü bitmiş durumda olsa bile çerçeve düzeninin gerçek genişliğini ve yüksekliğini gösterecektir.

<?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>

Örneğin

için Aşağıda MainActivity.java ait kodudur. Ekranda yükseklik ve genişliği görüntülemek için Tost kullanırsak.

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(); 
 

 
    } 
 

 
}

biz Öykünücüsünde App çalıştırırsanız Tost mesajı şeklinde çıktısı aşağıdaki gibi olacaktır: Biz değiştirirseniz width = 72 height Şimdi = 72

noteAllChildren değeri false değerinden sonra Tost mesajı çıktı çerçevesi düzeni genişliği ve yüksekliği: width = 0 yükseklik = 0