ConstraintLayout(约束布局), 是2016年Google I/O
最新推出的Android布局, 目前还在完善阶段. 从推出的力度而言, 应该会成为主流布局样式. 在最新版本的Android Studio
中, ConstraintLayout已经成为默认布局.
概念
ConstraintLayout约束布局的含义: 根据布局中的其他元素或视图, 确定View在屏幕中的位置. 包含三个重要信息, 根据其他视图设置位置, 根据父容器设置位置, 根据基准线设置位置.
layout_constraint[本源]_[目标]="[目标ID]"
例如:
app:layout_constraintBottom_toBottomOf="@+id/constraintLayout"
约束当前View的底部
至目标View的底部
, 目标View是constraintLayout. 表明, 把当前View放置到constraintLayout(父容器)的底部, 并且底部一致.
为了演示多个示例, 使用复用的Activity页面. 根据参数设置标题和布局Id.
public
class
LayoutDisplayActivity
extends
AppCompatActivity {
private
static
final
String TAG = LayoutDisplayActivity.
class
.getSimpleName();
static
final
String EXTRA_LAYOUT_ID = TAG +
".layoutId"
;
@Override
protected
void
onCreate(
@Nullable
Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setTitle(getIntent().getStringExtra(Intent.EXTRA_TITLE));
final
int
layoutId = getIntent().getIntExtra(EXTRA_LAYOUT_ID,
0
);
setContentView(layoutId);
}
}
|
主页面使用ListView展示多个项, 每项都是不同的布局. 点击项发送不同的Intent, 填充所要显示的页面.
public
class
MainActivity
extends
AppCompatActivity {
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView list = (ListView) findViewById(R.id.activity_main);
ArrayAdapter<String> adapter =
new
ArrayAdapter<>(
this
,
android.R.layout.simple_list_item_1, LIST_ITEMS);
list.setAdapter(adapter);
list.setOnItemClickListener(
new
AdapterView.OnItemClickListener() {
@Override
public
void
onItemClick(AdapterView<?> adapterView, View view,
int
i,
long
l) {
Intent intent =
new
Intent(MainActivity.
this
, LayoutDisplayActivity.
class
);
intent.putExtra(Intent.EXTRA_TITLE, LIST_ITEMS[i]);
intent.putExtra(LayoutDisplayActivity.EXTRA_LAYOUT_ID, LAYOUT_IDS[i]);
startActivity(intent);
}
});
}
}
|
基础
ConstraintLayout布局最基本的使用方式, 就是直接指定位置. 取消
按钮的底部对齐constraintLayout(父容器)
的底部, 左侧对齐父容器的左侧. 下一步
按钮的底部对齐父容器的底部, 而左侧对齐取消
按钮的右侧. 并且每个按钮边缘有Margin空隙.
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
android.support.constraint.ConstraintLayout
xmlns:android
=
|