Android studio約束佈局 ConstraintLayout
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" ; //
佈局ID
@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]); //
佈局Id
startActivity(intent);
}
});
}
}
|
基礎
ConstraintLayout佈局最基本的使用方式, 就是直接指定位置. 取消
按鈕的底部對齊constraintLayout(父容器)
的底部, 左側對齊父容器的左側. 下一步
按鈕的底部對齊父容器的底部, 而左側對齊取消
按鈕的右側. 並且每個按鈕邊緣有Margin空隙.
<? xml version = "1.0" encoding = "utf-8" ?>
< android.support.constraint.ConstraintLayout xmlns:android = "<a
href="http://schemas.android.com/apk/res/android" "="" style="text-decoration: none; border-radius: 0px; border: 0px; bottom: auto; float: none; height: auto; left: auto; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; right:
auto; top: auto; vertical-align: baseline; width: auto; box-sizing: content-box; font-size: 14px; min-height: inherit; color: rgb(92, 230, 56) !important; background: 0px 50%;">http://schemas.android.com/apk/res/android"
xmlns:app = "<a
href="http://schemas.android.com/apk/res-auto" "="" style="text-decoration: none; border-radius: 0px; border: 0px; bottom: auto; float: none; height: auto; left: auto; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; right: auto;
top: auto; vertical-align: baseline; width: auto; box-sizing: content-box; font-size: 14px; min-height: inherit; color: rgb(92, 230, 56) !important; background: 0px 50%;">http://schemas.android.com/apk/res-auto"
android:id
|