简体   繁体   English

将图像视图动态添加到相对布局(对齐问题)

[英]Dynamically add imageview to Relativelayout (Alignment Issue)

I am trying to achieve a layout dynamically which is given below:我正在尝试动态实现布局,如下所示:

在此处输入图片说明

I can manage to done all things dynamically.我可以设法动态地完成所有事情。 But I can't align item name (Chicken Masala) to right of the ImageView .但我无法将项目名称(Chicken Masala)与 ImageView 的右侧对齐。 I am reached at this position as following.我在这个位置达成如下。

在此处输入图片说明

 RelativeLayout primary_layout = new RelativeLayout(this);
    LayoutParams layoutParam = new LayoutParams(LayoutParams.MATCH_PARENT,
            LayoutParams.MATCH_PARENT);
    primary_layout.setLayoutParams(layoutParam);
    // primary_layout.setOrientation(LinearLayout.HORIZONTAL);
    // primary_layout.setBackgroundColor(0xff99ccff);
    //String cross = " � ";

    String makeString = aOrder.getQuantity() + " "
            + aOrder.getFoodName();


    ImageView imageView_remove = createAImageview(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT, RelativeLayout.CENTER_VERTICAL,
            10, 20);

    TextView item_name = createATextViewWithParam(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT, RelativeLayout.ALIGN_TOP, imageView_remove.getId(),
            makeString, 20, 10, 20);

    TextView txt_item_price = createATextView(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT, RelativeLayout.ALIGN_PARENT_RIGHT,
            "" + item_price, 20, 10, 20);

    primary_layout.addView(imageView_remove);
    primary_layout.addView(item_name);
    primary_layout.addView(txt_item_price);

I am share Two methods createAImageview() & createATextViewWithParam() which is necessary for this Layout.我分享了两个方法 createAImageview() 和 createATextViewWithParam(),这是此布局所必需的。

    public ImageView createAImageview(int layout_width, int layout_height, int align,
                                  int margin, int padding) {

    ImageView imageView = new ImageView(this);
    RelativeLayout.LayoutParams _params = new RelativeLayout.LayoutParams(
            layout_width, layout_height);

    _params.setMargins(margin, margin, margin, margin);
    _params.addRule(align);
    imageView.setLayoutParams(_params);
    imageView.setPadding(padding, padding, padding, padding);
    imageView.setImageResource(R.mipmap.remove);
    return imageView;

}


public TextView createATextViewWithParam(int layout_widh, int layout_height, int align, int align_id,
                                         String text, int fontSize, int margin, int padding) {

    TextView textView_item_name = new TextView(this);

    // LayoutParams layoutParams = new LayoutParams(
    // LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    // layoutParams.gravity = Gravity.LEFT;
    RelativeLayout.LayoutParams _params = new RelativeLayout.LayoutParams(
            layout_widh, layout_height);

    _params.setMargins(margin, margin, margin, margin);
    _params.addRule(align, align_id);
    textView_item_name.setLayoutParams(_params);

    textView_item_name.setText(text);
    textView_item_name.setTextSize(TypedValue.COMPLEX_UNIT_SP, fontSize);
    textView_item_name.setTextColor(Color.parseColor("#000000"));
    // textView1.setBackgroundColor(0xff66ff66); // hex color 0xAARRGGBB
    textView_item_name.setPadding(padding, padding, padding, padding);

    return textView_item_name;

}

You need to add rule for LEFT_OF/RIGHT_OF :您需要为LEFT_OF/RIGHT_OF添加规则:

_params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
_params.addRule(RelativeLayout.LEFT_OF, R.id.id_of_textview);
imageView.setLayoutParams(_params);

Try this,尝试这个,

activity_main.xml活动_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.dynamicviewdemo.MainActivity" >

    <RelativeLayout
        android:id="@+id/llAddMember"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:orientation="vertical" />

</RelativeLayout>

MainActivity.java主活动.java

package com.example.dynamicviewdemo;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;

public class MainActivity extends Activity {

    private RelativeLayout llAddMember;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        llAddMember = (RelativeLayout) findViewById(R.id.llAddMember);

        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        final RelativeLayout linearLayout = new RelativeLayout(getApplicationContext());
        linearLayout.setLayoutParams(layoutParams);

        LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

        ImageView imgView = new ImageView(MainActivity.this);
        imgView.setImageResource(R.drawable.ic_launcher);
        imgView.setLayoutParams(lparams);
        linearLayout.addView(imgView);
        lparams.setMargins(0, 15, 0, 0);

        LayoutParams lparams1 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

        TextView txtResGender = new TextView(MainActivity.this);
        txtResGender.setLayoutParams(lparams1);
        txtResGender.setText("Hello World");
        txtResGender.setTextSize(14);
        txtResGender.setTextColor(Color.parseColor("#9C9C9C"));
        linearLayout.addView(txtResGender);
        lparams1.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        lparams1.setMargins(0, 30, 15, 0);

        llAddMember.addView(linearLayout);      
    }
}

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

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