0

我有这个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>

我想在 java 代码中创建相同UImain.xml内容。我尝试对其进行编码,但它不起作用,它与 xml 不同。这是代码:

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);
}
4

1 回答 1

0

您的代码并没有完全复制xml布局(这对评论来说太大了):

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

您必须修改它以使用您的对象page1(我不知道您到底想在那里做什么)。另外,您确定必须使用addContentView()(也许setContentView?)方法吗?(此方法会将视图添加到已经存在的布局中)

于 2012-04-20T07:12:16.450 回答