2012-08-10 24 views
8

tôi đang tạo ra FrameLayout động bằng cách sử dụng đoạn mã sauTạo Layout lập trình trong android - vấn đề

mylayout.java

FrameLayout layout = new FrameLayout(this); 
FrameLayout.LayoutParams layoutparams=new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT,Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);    
layout.setLayoutParams(layoutparams); 

webview=new WebView(this); 
webview.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT)); 

splashview=new ImageView(this); 
splashview.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT)); 
splashview.setScaleType(ScaleType.FIT_XY); 
splashview.setImageResource(R.drawable.splash); 
splashview.setVisibility(View.INVISIBLE); 

progressbar=new ProgressBar(this); 
FrameLayout.LayoutParams params=new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.MATCH_PARENT,Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL); 
progressbar.setLayoutParams(params); 
progressbar.setVisibility(View.INVISIBLE);   


layout.addView(webview); 
layout.addView(progressbar); 
layout.addView(splashview); 

setContentView(layout); 

mylayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_gravity="center_vertical|center_horizontal" 
    android:gravity="center_vertical|center_horizontal" > 

    <WebView 
     android:id="@+id/webview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
    </WebView> 

<ProgressBar 
    android:id="@+id/progressBar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical|center_horizontal" 
    android:visibility="invisible" /> 




    <ImageView 
     android:id="@+id/splashscreen" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:contentDescription="@string/myimg" 
     android:scaleType="fitXY" 
     android:src="@drawable/splash" 
     android:visibility="invisible" /> 

</FrameLayout> 

Tôi cần equalent code for the above xml file in java. tôi đã làm gì sai?

Lưu ý: Sử dụng mã java ở trên, mỗi mã chồng chéo nhau.

+1

tôi đã làm gì sai? - bạn đã nhận thấy những sai lầm nào? –

Trả lời

3

Android Developer - Frame Layout Documentation đọc:

Nói chung, FrameLayout nên được sử dụng để giữ một cái nhìn đứa trẻ duy nhất, bởi vì nó có thể khó khăn để tổ chức views con trong một cách đó là khả năng mở rộng kích thước màn hình khác nhau mà không có con chồng chéo lẫn nhau. Tuy nhiên, bạn có thể thêm nhiều trẻ em vào FrameLayout và kiểm soát vị trí của chúng trong FrameLayout bằng cách gán trọng số cho mỗi đứa trẻ, sử dụng thuộc tính android:layout_gravity.

Trong trường hợp của bạn, bạn có thể sử dụng layout.setForegroundGravity(int) cho tương tự.

1

Thêm

layout.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL); 

hoặc

layout.setGravity(Gravity.CENTER); 

Bạn quên để thiết lập mức độ nghiêm trọng của bố cục.

+0

nếu tôi sử dụng mã trên cho bố cục Framwork, hiển thị lỗi là "phương thức chưa xác định" – Ponmalar

+0

Có, bạn đúng ... nhưng phương thức này là setForgroundGravity. Dù sao thì cũng cám ơn bạn. Cho upvote – Ponmalar

Các vấn đề liên quan