1

我想并排实现一个图像视图和一个文本视图。我通过使用 XML 实现了这一点。但是我想以编程方式实现这一目标,但到目前为止还没有运气。我的 XML 和 Java 代码如下。请帮助我以编程方式执行。

我正在片段中执行 Java 代码。

XML 代码:

<RelativeLayout
       android:id="@+id/rl1"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    >

    <com.loopj.android.image.SmartImageView
        android:id="@+id/my_image1"
        android:layout_width="160dip" 
        android:layout_height="100dip"
        android:adjustViewBounds="true"  
        android:scaleType="fitXY" 
         />

    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/my_image1"
        android:layout_alignTop="@+id/my_image1"
        android:layout_toRightOf="@+id/my_image1"
        android:gravity="center_vertical"
     />
</RelativeLayout>

JAVA代码:

RelativeLayout rl1 = new RelativeLayout(getActivity());
RelativeLayout.LayoutParams rlParams;
rlParams = new RelativeLayout.LayoutParams(
                 newLayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
rlParams.addRule(LinearLayout.VERTICAL);
rl1.setLayoutParams(rlParams);

SmartImageView siv1 = new SmartImageView(getActivity());
siv1.setId(rand.nextInt(50000) + 1);
siv1.setLayoutParams(new LayoutParams(width,height));
siv1.setAdjustViewBounds(true);
siv1.setScaleType(ScaleType.FIT_XY);
siv1.setImageUrl(Uri);

TextView tv1 = new TextView(getActivity());
RelativeLayout.LayoutParams relativeLayoutParams;
relativeLayoutParams = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.WRAP_CONTENT,
                    RelativeLayout.LayoutParams.WRAP_CONTENT);
tv1.setLayoutParams(relativeLayoutParams);
relativeLayoutParams.setMargins(10, 0, 0, 0);
tv1.setGravity(Gravity.CENTER_VERTICAL);
tv1.setText("Sample Text");

rl1.addView(siv1);
rl1.addView(tv1);
ll.addView(rl1);

通过执行上面的代码,我得到了图像,但文本在图像内。但是,我想得到左边的图像和右边的文本。

提前致谢

4

4 回答 4

5

将以下代码添加到您的活动中:

rlParams.addRule(RelativeLayout.ALIGN_TOP, siv1);
rlParams.addRule(RelativeLayout.ALIGN_BOTTOM, siv1);
rlParams.addRule(RelativeLayout.RIGHT_OF, siv1);
tv1.setLayoutParams(rlParams);

然后做:

rl1.addView(siv1);
rl1.addView(tv1);

希望这可以帮助。

于 2013-05-20T07:06:26.280 回答
2

在您的情况下,最好使用水平LinearLayout

LinearLayout ll = new LinearLayout(getActivity());
ll.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
ll.setLayoutParams(param);

TextView textview = new TextView(getActivity());
...



SmartImageView siv1 = new SmartImageView(getActivity());
...

ll.addView(textview);
ll.addView(siv1);
于 2013-05-20T07:12:08.103 回答
2

在 RelativeLayout 中对齐视图非常困难。我会建议你使用 TableRows 或 LinearLayouts。这两者都提供了更简单的方法来并排对齐视图。这是一个源代码,其中一个 TextView 左对齐,4 个 ImageView 右对齐。你可以从这个 TextView 中得到想法, 在文本上方和下方占用/消耗太多空间

于 2013-05-20T07:15:54.020 回答
1

您可以像这样设置文本的边距

relativeLayoutParams.setMargins(200, 0, 0, 0);

但这不是最佳实践,所以做一件事将线性布局设置方向水平添加到它的 imageview 和 textview 中,然后将此线性布局添加到您的相对布局中。希望这可以帮助。

于 2013-05-20T07:05:57.257 回答