java.view.View类
超类 (button等的父类)
android:id属性
android:id="@+id/user"
android:background属性
android:background="@mi pmap/bg" (放在mi pmap之后才可以调用bg.jpg等)
android:background="#FF6600" 直接使用颜色
android:padding属性
paddingLeft(paddingStart API>17)
padiingTop
paddingRight(paddingEnd)
paddingBottom
ViewGroup类 extends View类 (抽象类)
用它的子类使用
ViewGroup控制其子组件分布时依赖的内部类
1.ViewGroup.LayoutParams类
android:layout_width 布局宽度
android:layout_height 布局高度
设置成具体的??dp 或者 使用常量 FILL_PARENT(指与父容器相同)、
MATCH_PARENT指设置组件的宽高度与父容器相同(SDK>8取代FILL_PARENT)、
WRAP_CONTENT
2.ViewGroup.MarginLayoutParams类
设置外边距
android:layout_marginTop组件到上边的距离(顶边距)
android:layout_marginBottom组件到下边的距离(底边距)
android:layout_marginLeft(android:layout_marginStart)
android:layout_marginRight(android:layout_marginEnd)
Android UI组件的层次结构
控制UI界面
1.使用XML布局文件控制UI界面(推荐)
2.在Java代码中控制UI界面
3.使用XML和Java代码混合控制UI界面
4.开发自定义的View
1.使用XML布局文件控制UI界面
1.在Android应用的res/layout目录下编写XML布局文件。比如activity_main.xml
2.在Activity中使用以下Java代码显示XML文件中布局的内容。
setContentView(R.layout.activity_main); --> activity_main布局名称
2.在Java代码中控制UI界面
在代码中控制UI界面可以分为三个关键步骤:
1)创建布局管理器
2)创建具体组件,可以是TextView、ImageView、EditText和Button等Android提供的组件,并设置组件的布局和各种属性。
3)将创建的具体组件添加到布局管理器中。
代码如下所示:
package com.example.txst1_javalayout;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout frameLayout = new FrameLayout(this);//创建帧布局管理器
frameLayout.setBackgroundResource(R.mipmap.bg);//设置背景
setContentView(frameLayout);//设置在activity中显示framelayout
TextView text1 = new TextView(this);
text1.setText("开始游戏");//设置显示文字
text1.setTextSize(TypedValue.COMPLEX_UNIT_SP,18);//设置文字大小,单位为sp(缩放像素)
text1.setTextColor(Color.rgb(17,85,114));//设置文字颜色
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);//创建保存布局参数的对象 wrap_content:自适应大小
params.gravity = Gravity.CENTER;//设置居中显示
text1.setLayoutParams(params);//设置布局参数
text1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(MainActivity.this).setTitle("系统提示")//创建对话框的标题
.setMessage("游戏有风险,进入需谨慎,真的要进入吗?")
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("桌面台球","进入游戏");//输出消息日志
}
}).setNegativeButton("退出",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("桌面台球","退出游戏");
finish();//结束游戏
}
}).show();//显示对话框
}
});
frameLayout.addView(text1);//将text1添加到布局管理器中
}
}