今天学了,四大布局,还有如何自定义布局,和引入自定义布局,还有自定义控件,最后就是ListView 最后这个ListView学的迷迷糊糊,还有什么适配器,呕吼是我Java没学好吧emmm。
自定义标题栏布局 新建一个布局文件title.xml
?
<Button
android:id="@+id/title_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:background="#000000"
android:text="back"
android:textColor="#fff" />
?
<TextView
android:id="@+id/title_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center"
android:gravity="center"
android:text="Title Text"
android:textColor="#fff"
android:textSize="24sp"/>
?
<Button
android:id="@+id/title_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_gravity="center"
android:background="#000000"
android:text="Edit"
android:textColor="#fff"/>
?
在需要的布局文件中用<include layout = "”/>来引入自定义标题栏布局.
<include layout="@layout/title"/>
用自定义标题栏时需要把系统自带的隐藏起来,因此用到getSupportActionBar()方法来获取ActionBar的实例,然后调用hind()方法将默认的标题栏隐藏起来即可。
新建一个类并继承LinearLayout,并重写其中两个带参数的构造函数,以便在布局中引入该控件时调用构造函数。
public class TitleLayout extends LinearLayout {
?
?
public TitleLayout(Context context, AttributeSet attrs){
super(context,attrs);
LayoutInflater.from(context).inflate(R.layout.title,this);
?
}}
在构造函数中用LayouInflater 对标题栏布局进行动态加载,然后调用from()方法构建出一个LayoutInflater对象,后调用inflate()方法加载一个动态布局文件
inflate() 方法带两个参数,第一个参数是要加载布局的id 第二个参数是给加载好的布局添加一个父布局
在布局中添加控件需要指明控件完整类名,包名。
然后可用像正常控件那样设置监听
private String[] data = {"Apple","Banana", "hello", "nice to eet you", "good morning",
"ambition", "stranger","Apple","Banana", "hello", "nice to eet you", "good morning",
"ambition", "stranger","Apple","Banana", "hello", "nice to eet you", "good morning",
"ambition", "stranger"};
?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,data);
ListView listView = findViewById(R.id.list_view);
listView.setAdapter(adapter);
}
ListView是用来展示大量数据的
数组中的数据无法直接的传递给ListView,所以要借助适配器,借助ArrayAdapter,他可用通过泛型来指定适配的数据类型,然后在构造函数中将要适配数据传入。
构造函数中一共有三个函数,第一个是上下文,第二个是ListView子项布局的id,现在用 android.R.layout.simple_list_item_1 作为ListView子项的id,第三个是要适配的数据。
android.R.layout.simple_list_item_1是Android内置的布局文件,里面只有一个TextView,可用于简单的显示一段文本。
最后用ListView 的setAdapter()方法,将构建好的适配器对象传递进去
type n. 类型,品种;模范;样式
margin n. 边缘;利润,余裕;页边的空白
原文:https://www.cnblogs.com/youseed/p/13492880.html