Android 레이아웃 에 view 를 동적 으로 추가 하 는 두 가지 방법

10484 단어 android
1.보기 파일 을 추가 할 때 두 가지 방식 이 있 습 니 다.1.xml 파일 을 통 해 layot 를 정의 합 니 다.2.자바 코드 작성
머리말
1.xml 파일 구성
2.LayoutInflater
addview 를 언급 하면 먼저 Layout Inflater 류 를 알 아 봐 야 합 니 다.이 종류의 가장 중요 한 기능 은 xml 로 표 현 된 layot 를 View 로 전환 하 는 기능 을 실현 하 는 것 이다.이해 하기 편리 하도록 우 리 는 그것 을 findViewById()와 비교 할 수 있 습 니 다.두 사람 은 모두 특정한 대상 을 예화 할 수 있 습 니 다.다른 것 은 findViewById()는 xml 레이아웃 파일 의 구체 적 인 widget 컨트롤 을 찾 는 것 입 니 다.LayoutInflater 는 res/layot/아래 의 xml 레이아웃 파일 을 찾 아 예화 할 수 있 습 니 다.
(1)생 성
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);혹시
LayoutInflater inflater = LayoutInflater.from(Activity.this);혹시
LayoutInflater inflater = getLayoutInflater();
이 세 가지 방법 은 본질 이 같다.
(2)inflate()
Layout Inflater.inflate()로 LayOut 파일 을 VIEW 로 변환 합 니 다.
View view = inflater.inflate(R.layout.block_gym_album_list_item, null);
3.보기 파일 추가
3.절차 1.xml 파일 에서 layot(Block 정의gym_album_list_item.xml)
<linearlayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="5dp">

        <imageview 
          android:id="@+id/iv_head_album"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:src="@drawable/defaulthead">
        imageview>
linearlayout>

activity_dynamic
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ll_parent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <include
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            layout="@layout/block_head_back">
        include>
    linearlayout>

3、MainActivity
package com.gxtag.gym.ui;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;

import com.gxtag.gym.R;
import com.icq.app.widget.StatedButton;

public class MainActivityextends Activity implements OnClickListener{

    private Context mContext;
    private TextView mTv_title;
    private String title = "      ";
    private StatedButton mSbtn_back;
    private LinearLayout mLl_parent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dynamic);
        mContext=this;
        initView();
        mLl_parent.addView(addView1());
        mLl_parent.addView(addView2());
    }

    private void initView() {
        // TODO      
        mLl_parent=(LinearLayout) findViewById(R.id.ll_parent);
        mTv_title = (TextView) findViewById(R.id.tv_title);
        mTv_title.setText(String.format(String.format(
                getResources().getString(R.string.title), title)));
        mSbtn_back = (StatedButton) findViewById(R.id.sbtn_navback);
        mSbtn_back.setOnClickListener(this);  
    }

    private View addView1() {
        // TODO       (xml  )
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( 
                        LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);       //LayoutInflater inflater1=(LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//      LayoutInflater inflater2 = getLayoutInflater();
        LayoutInflater inflater3 = LayoutInflater.from(mContext);
        View view = inflater3.inflate(R.layout.block_gym_album_list_item, null);
        view.setLayoutParams(lp);
        return view;
        }

    private View addView2() {
        // TODO       (java  )
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( 
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
        LinearLayout view = new LinearLayout(this); 
        view.setLayoutParams(lp);//       
        view.setOrientation(LinearLayout.HORIZONTAL);//    View Linearlayout//         
        //   View         
        ViewGroup.LayoutParams vlp = new ViewGroup.LayoutParams( 
                ViewGroup.LayoutParams.WRAP_CONTENT, 
                ViewGroup.LayoutParams.WRAP_CONTENT); 
        ViewGroup.LayoutParams vlp2 = new ViewGroup.LayoutParams( 
                ViewGroup.LayoutParams.WRAP_CONTENT, 
                ViewGroup.LayoutParams.WRAP_CONTENT); 

        TextView tv1 = new TextView(this); 
        TextView tv2 = new TextView(this); 
        tv1.setLayoutParams(vlp);//  TextView    
        tv2.setLayoutParams(vlp2); 
        tv1.setText("  :"); 
        tv2.setText("  "); 
        tv2.setPadding(calculateDpToPx(50), 0, 0, 0);//     
        view.addView(tv1);// TextView     View   
        view.addView(tv2);// TextView     View   
        return view; 
    }

    private int calculateDpToPx(int padding_in_dp){ 
        final float scale = getResources().getDisplayMetrics().density; 
        return  (int) (padding_in_dp * scale + 0.5f); 
    } 


    @Override
    public void onClick(View v) {
        // TODO       
        switch (v.getId()) {
        case R.id.sbtn_navback:
            this.finish();
            break;
        default:
            break;
        }
    }

}

좋은 웹페이지 즐겨찾기