android用java動態增添刪除修改布局_Android

來源:互聯網
上載者:User

XML對開發人員來說十分的方便,不僅使用起來簡單,而且能夠及時調試,修改介面之後馬上能看到效果。
Java設定布局不具有這個優勢。但是java卻可以動態對布局進行操作,這是xml所做不到的。筆者認為,新手索要掌握的java動態設定布局主要有兩點,一方面是對布局的屬性進行修改,另一方面是增添和刪除控制項。

首先說一下動態設定布局在項目中的應用,拿高德地圖舉個例子,如下圖:

 

我們可以看到,高德地圖的預設介面與點擊地圖之後的介面是不一樣的,上面同樣的控制項在layout中的位置也不一樣,這個用xml便是難以實現的了,於是java動態設定布局便有了其重要性。

接下來看一下分享的demo效果:

代碼其實比較容易理解,具體的解釋已經注釋在代碼中了,讀者可以自己寫了理解一下。
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> 

以上就是本文的全部內容,希望對大家的學習有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.