android 자바 동적 추가 로 레이아웃 수정

XML 은 개발 자 에 게 매우 편리 하고 사용 하기에 간단 할 뿐만 아니 라 제때에 디 버 깅 할 수 있 으 며 인 터 페 이 스 를 수정 한 후에 바로 효 과 를 볼 수 있다.
자바 설정 레이아웃 은 이러한 장점 을 가지 지 않 습 니 다.그러나 자바 는 동적 으로 레이아웃 을 조작 할 수 있 습 니 다.이것 은 xml 에서 할 수 없 는 것 입 니 다.필 자 는 초보 자가 파악 하고 자 하 는 자바 동적 설정 구 조 는 주로 두 가지 가 있 는데 하 나 는 구조의 속성 을 수정 하 는 것 이 고 다른 하 나 는 컨트롤 을 추가 하고 삭제 하 는 것 이 라 고 생각한다.
먼저 동적 설정 레이아웃 이 프로젝트 에서 의 응용 을 말 하고 고 덕 지 도 를 예 로 들 면 다음 과 같다.
 
우 리 는 고 덕 맵 의 기본 인터페이스 와 지 도 를 클릭 한 후의 인터페이스 가 다르다 는 것 을 알 수 있 습 니 다.위의 똑 같은 컨트롤 이 layot 에서 의 위치 도 다 릅 니 다.이것 은 xml 로 실현 하기 어렵 기 때문에 자바 동적 설정 레이아웃 이 중요 합 니 다.
다음은 공 유 된 데모 효과:

코드 는 사실 비교적 이해 하기 쉽 고 구체 적 인 해석 은 코드 에 주석 이 달 려 있어 독자 가 직접 써 서 이해 할 수 있다.
MainActivity:

package com.example.activeuitest; 
 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.RadioGroup; 
import android.widget.RelativeLayout; 
 
public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 
 
  private Button BT_Gone;//      
  private Button BT_Visiable;//      
  private Button BT_Add;//     
  private Button BT_Delete;//     
 
  private RelativeLayout RL_main; 
  private RadioGroup RL_RadioGroup; 
  private RelativeLayout RL_InfoTip; 
  private LinearLayout LL_test; 
 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
 
    init();//    
  } 
 
  private void init() { 
    BT_Gone= (Button) findViewById(R.id.button1); 
    BT_Visiable= (Button) findViewById(R.id.button2); 
    BT_Add= (Button) findViewById(R.id.button3); 
    BT_Delete= (Button) findViewById(R.id.button4); 
 
    RL_main=(RelativeLayout)findViewById(R.id.main_layout); 
    RL_RadioGroup=(RadioGroup)findViewById(R.id.radio_group); 
    RL_InfoTip=(RelativeLayout)findViewById(R.id.info_tip); 
 
    //       xml         layout view(  linearlayout         ) 
    View view= LayoutInflater.from(this).inflate(R.layout.test_linear_layout,null,false ); 
    LL_test=(LinearLayout)view.findViewById(R.id.test_layout); 
 
    BT_Gone.setOnClickListener(this); 
    BT_Visiable.setOnClickListener(this); 
    BT_Add.setOnClickListener(this); 
    BT_Delete.setOnClickListener(this); 
  } 
 
  @Override 
  public void onClick(View v) { 
    switch(v.getId()){ 
      case R.id.button1: 
        RL_InfoTip.setVisibility(View.GONE);//  tip      
        //        
        RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams( 
            ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
        lp1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);//     
        lp1.setMargins(10, 0, 0, 10);//  margin,     px 
        RL_RadioGroup.setLayoutParams(lp1);//       
        break; 
      case R.id.button2: 
        RL_InfoTip.setVisibility(View.VISIBLE);//  tip     
        //        
        RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams( 
            ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
        lp2.setMargins(10, 0, 0, 10);//  margin,     px 
        lp2.addRule(RelativeLayout.ABOVE, R.id.info_tip);//  above,    R.id.info_tip   
        RL_RadioGroup.setLayoutParams(lp2);//       
        break; 
      case R.id.button3: 
        //       ,     px 
        RelativeLayout.LayoutParams lp3 = new RelativeLayout.LayoutParams(200, 200); 
        lp3.addRule(RelativeLayout.BELOW, R.id.button4);//  below,    R.id.button4   
        RL_main.addView(LL_test, lp3);//       
        LL_test.setVisibility(View.VISIBLE);//          ,       
        break; 
      case R.id.button4: 
        RL_main.removeView(LL_test);//       
        break; 
    } 
  } 
} 
activity_main:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:id="@+id/main_layout" 
   > 
 
 
  <Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="  "/> 
  <Button 
    android:id="@+id/button2" 
    android:layout_below="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="  "/> 
  <Button 
    android:id="@+id/button3" 
    android:layout_below="@+id/button2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="    "/> 
  <Button 
    android:id="@+id/button4" 
    android:layout_below="@+id/button3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="    "/> 
  <RadioGroup 
    android:id="@+id/radio_group" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="5dp" 
    android:layout_marginLeft="10px" 
    android:layout_marginBottom="10px" 
    android:orientation="horizontal" 
    android:layout_above="@+id/info_tip" 
    android:background="@android:color/darker_gray" 
    > 
 
    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="   :"/> 
 
    <RadioButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:checked="true" 
      android:text="  " 
      android:textColor="@android:color/black" /> 
 
    <RadioButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="  " 
      android:textColor="@android:color/black" /> 
  </RadioGroup> 
 
  <RelativeLayout 
    android:id="@+id/info_tip" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    android:paddingTop="20dp" 
    android:background="@android:color/darker_gray" 
    > 
 
    <TextView 
      android:id="@+id/info_tip_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="    " 
      android:textColor="@android:color/black" 
      android:textSize="20dp"/> 
    <TextView 
      android:id="@+id/info_tip_distance" 
      android:layout_below="@+id/info_tip_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="    "/> 
    <TextView 
      android:id="@+id/info_tip_address" 
      android:layout_toRightOf="@+id/info_tip_distance" 
      android:layout_below="@+id/info_tip_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dp" 
      android:text="    "/> 
 
    <Button 
      android:layout_alignParentRight="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="  "/> 
 
    <LinearLayout 
      android:layout_below="@+id/info_tip_address" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:orientation="horizontal"> 
      <Button 
        android:layout_width="0dp" 
        android:layout_weight="1" 
        android:layout_height="wrap_content" 
        android:text="  "/> 
      <Button 
        android:layout_width="0dp" 
        android:layout_weight="1" 
        android:layout_height="wrap_content" 
        android:text="  "/> 
      <Button 
        android:layout_width="0dp" 
        android:layout_weight="1" 
        android:layout_height="wrap_content" 
        android:text="  "/> 
    </LinearLayout> 
 
  </RelativeLayout> 
</RelativeLayout> 
test_linear_layout:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
  xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="200dp" 
  android:layout_height="200dp" 
  android:background="@android:color/holo_blue_bright" 
  android:id="@+id/test_layout" 
  android:orientation="horizontal" 
  > 
 
</LinearLayout> 
이상 은 본문의 전체 내용 이 므 로 여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기