以编程方式创建带样式的线性布局

时间:2014-03-09 15:13:31

标签: android android-layout android-linearlayout

我正在尝试以编程方式创建LinearLayout但有些东西没有按预期工作。

这是代码:

LinearLayout djCard = (LinearLayout)getLayoutInflater().inflate(R.layout.cardtemplate, null);

                    ImageView djimage = new ImageView(this);
                    djimage.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 2));
                    djimage.setAdjustViewBounds(true);
                    djimage.setScaleType(ImageView.ScaleType.FIT_START);
                    bmpDj = BitmapFactory.decodeStream(am.open("djs/horger.jpg"));
                    djimage.setImageBitmap(bmpDj);

                    RobotoTextView djtext = new RobotoTextView(this);
                    djtext.setText(R.string.title_horger);
                    djtext.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 8));
                    djtext.setGravity(Gravity.CENTER_VERTICAL);
                    djtext.setTypeface(RobotoTypefaceManager.obtaintTypeface(this,12));
                    djtext.setTextSize(R.dimen.textSizeLarge);


                    djCard.addView(djimage);
                    djCard.addView(djtext);
                    container.addView(djCard);

cardtemplate:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="-7dp"
    android:clickable="true"
    android:orientation="horizontal"
    style="@style/nowCardStyle"/>

看看这个截图:上面的卡是我在xml中的,另一个是我动态创建的卡。即使TextView(自定义一个)也没有显示......

img

这是我在xml中的卡片布局(这是我想要的):

<LinearLayout
            android:id="@+id/djCard1"
            style="@style/nowCardStyle"
            android:clickable="true"
            android:padding="-7dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/djImg1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:scaleType="fitStart"
                android:adjustViewBounds="true"/>

            <com.mikebdev.douala.widget.RobotoTextView
                android:id="@+id/djText1"
                android:layout_gravity="center"
                android:layout_marginLeft="@dimen/activity_vertical_margin"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:typeface="roboto_condensed_light"
                android:textSize="@dimen/textSizeLarge"
                android:layout_weight="8"/>

        </LinearLayout>

1 个答案:

答案 0 :(得分:1)

这可能不是您问题的答案,但它可能会解决您的问题:

您使用LinearLayout充气cardtemplate.xml,并尝试以编程方式添加ImageView和RobotoTextView。 为什么不膨胀你提供的第二个XML文件,将ImageView和RobotoTextView作为子项包含在内并从父项中检索这些子项?

例如:

  ImageView djimage = (ImageView) djCard.findViewById(R.id.djImg1);
    RobotoTextView djtext = (RobotoTextView) djCard.findViewById(R.id.djText1);

然后你可以从XML中扩展布局,并尝试以编程方式创建布局,以避免麻烦:)