Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I have this main.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/ic_launcher"/>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:background="@android:color/white"
        android:orientation="horizontal" >   
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
             android:background="@drawable/barslide" 
             android:layout_marginLeft="500dp"/>
    </LinearLayout>
</FrameLayout>

I want to create the same UI like in main.xml in java code. I try to code it but it doesn't work, it's not same as the xml. Here is the code:

void createUI(){

    LayoutParams params1 = new FrameLayout
    (LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);

    LayoutParams params2 = new android.widget.FrameLayout.LayoutParams(
    android.widget.FrameLayout.LayoutParams.FILL_PARENT,
android.widget.FrameLayout.LayoutParams.FILL_PARENT,
Gravity.BOTTOM);

FrameLayout f1 = new FrameLayout(this);
f1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

LinearLayout l2 = new LinearLayout(this);
l2.setOrientation(LinearLayout.HORIZONTAL);
l2.setLayoutParams(params2);

view1 = new page1(getBaseContext());
view360 = view1.img1(getBaseContext());
view360.setBackgroundDrawable(getResources().getDrawable(R.drawable.black1));
view360.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));

slidebar = view1.img3(getBaseContext());
slidebar.setBackgroundResource(R.drawable.barslide);
slidebar.setLayoutParams(new LinearLayout.LayoutParams(300, LayoutParams.WRAP_CONTENT,Gravity.BOTTOM));


f1.addView(view360);
f1.addView(l2);
l2.addView(slidebar);

addContentView(f1, params1);
}
share|improve this question
2  
Add the code your tried. –  Luksprog Apr 20 '12 at 6:27
    
I can't add code : Oops! Your edit couldn't be submitted because: Your post does not have much context to explain the code sections; please explain your scenario more clearly. –  Zerntrino Apr 20 '12 at 6:32
    
Why I can't add code. T T –  Zerntrino Apr 20 '12 at 6:47
    
Help me for add code plz. code is here link. thank –  Zerntrino Apr 20 '12 at 6:51
    
thank you very much for helping me add code –  Zerntrino Apr 20 '12 at 7:00

1 Answer 1

up vote 0 down vote accepted

Your code doesn't quite replicate the xml layout(this was to big for a comment):

            // replace THIS(from the constructors) with your context reference
    FrameLayout fl = new FrameLayout(this);
    fl.setLayoutParams(new FrameLayout.LayoutParams(
            FrameLayout.LayoutParams.MATCH_PARENT,
            FrameLayout.LayoutParams.MATCH_PARENT));
    ImageView imv1 = new ImageView(this); // the first ImageView
    imv1.setLayoutParams(new FrameLayout.LayoutParams(
            FrameLayout.LayoutParams.MATCH_PARENT,
            FrameLayout.LayoutParams.MATCH_PARENT));
    imv1.setImageResource(R.drawable.ic_launcher);
    fl.addView(imv1);
    LinearLayout ll = new LinearLayout(this);
    FrameLayout.LayoutParams llp = new FrameLayout.LayoutParams(
            FrameLayout.LayoutParams.MATCH_PARENT,
            FrameLayout.LayoutParams.WRAP_CONTENT);
    llp.gravity = Gravity.BOTTOM;
    ll.setLayoutParams(llp);
    ll.setBackgroundColor(Color.WHITE);
    ImageView imv2 = new ImageView(this); // the second ImageView
    DisplayMetrics metrics = getResources().getDisplayMetrics();
    float width = 300f;     
    int pWidth = (int) (metrics.density * width + 0.5f);
    LinearLayout.LayoutParams imvlp = new LinearLayout.LayoutParams(pWidth,
            FrameLayout.LayoutParams.WRAP_CONTENT);
    float margin = 500f;
    int pMargin = (int) (metrics.density * margin + 0.5f);
    imvlp.leftMargin = pMargin;
    imv2.setLayoutParams(imvlp);
    imv2.setBackgroundResource(R.drawable.food_image1);
    ll.addView(imv2);
    fl.addView(ll);

You'll have to modify it to use your object page1(I don't know exactly what are you trying to do there). Also, are you sure you have to use the addContentView()(maybe setContentView?) method?(This method will add the views to the already present layout)

share|improve this answer
    
Thank you very much !!! it's same as the xml. ^ ^ –  Zerntrino Apr 20 '12 at 7:30

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.