Android 自定義View(inflate()模式)
阿新 • • 發佈:2018-12-29
1.建立LayoutInflater例項
有兩種方式
1.
LayoutInflater layoutInflater= LayoutInflater.from(MainActivity.this);
LayoutInflater layoutInflater= (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
2.在activity_main中建立父佈局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rl_content" android:layout_width="match_parent" android:layout_height="match_parent"> </RelativeLayout>
3.建立button子佈局
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:text="Button"
android:layout_width="300dp"
android:layout_height="wrap_content">
</Button>
4.給子佈局新增到父佈局中
package yuexia.com.customview; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.RelativeLayout; public class MainActivity extends AppCompatActivity { private RelativeLayout rl_content; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rl_content = (RelativeLayout) this.findViewById(R.id.rl_content); LayoutInflater inflater = LayoutInflater.from(MainActivity.this); LayoutInflater layoutInflater= (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); /* * 子元素屬性的實現的兩種方式 * 1.root新增父元素 * 2.給子元素添加布局 * */ View view=layoutInflater.inflate(R.layout.button,rl_content,true); // rl_content.addView(view); /* * 關於inflate的使用 * 1.inflate的方法中root和attachToRoot分別不為空和true的時候就會新增view不需要再addView() * 2.新增merge時root和attachToRoot分別必須不為空和必須為true,所以也就用不到addView() * */ } }