Android 레이아웃 에 view 를 동적 으로 추가 하 는 두 가지 방법
10484 단어 android
머리말
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;
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.