繁体   English   中英

Android-以编程方式实现视图

[英]Android - Implement Views programmatically

我想并排实现imageview和textview。 我是通过使用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);

通过执行以上代码,我得到了图像,但文本在图像内部。 但是,我想在左侧获得图像,在右侧获得文本。

提前致谢

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

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

希望这可以帮助。

在您的情况下,最好使用水平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);

在RelativeLayout中对齐视图非常困难。 我建议您使用TableRows或LinearLayouts。 这两种方式都可以更轻松地将视图并排对齐。 这是一个Source,其中一个TextView左对齐,其右对齐4个ImageView。 您可以从此TextView中获得想法, 在文本上方和下方占用/占用过多空间

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

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

但这不是最佳实践,因此请采取一件事,将线性布局设置方向设置为水平,同时将imageview和textview都添加到其中,然后将此线性布局添加到您的相对布局中。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM