簡體   English   中英

將圖像視圖動態添加到相對布局(對齊問題)

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

我正在嘗試動態實現布局,如下所示:

在此處輸入圖片說明

我可以設法動態地完成所有事情。 但我無法將項目名稱(Chicken Masala)與 ImageView 的右側對齊。 我在這個位置達成如下。

在此處輸入圖片說明

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

我分享了兩個方法 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;

}

您需要為LEFT_OF/RIGHT_OF添加規則:

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

嘗試這個,

活動_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>

主活動.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