填充可用空间复合组件约束布局

时间:2020-06-27 10:09:14

标签: android android-layout kotlin android-custom-view

如何使两个由约束布局制成的复合组件填充整个屏幕宽度(每个组件恰好使用屏幕宽度的一半)?

enter image description here

我不确定组件中指定的layout_width应该是什么,活动布局中指定的layout_width应该是什么。

这是我的代码的简化版本:

NavTextDrawer.kt

class NavTextDrawer(context: Context, attrs: AttributeSet) : ConstraintLayout(context, attrs) {
  init {
    LayoutInflater.from(context).inflate(R.layout.navtextdrawer, this)
  }
}

navtextdrawer.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@drawable/drawer_bg"
android:orientation="horizontal">

<TextView
    android:id="@+id/dataTV"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:drawablePadding="4dp"
    android:fontFamily="sans-serif-black"
    android:gravity="center_vertical"
    android:textColor="@android:color/black"
    android:textSize="36sp"
    android:text="TEST!@#"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

活动布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<com.example.testproj.NavTextDrawer
    android:id="@+id/cog"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintHorizontal_weight="1"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<com.example.testproj.NavTextDrawer
    android:id="@+id/sog"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_weight="1"
    app:layout_constraintStart_toEndOf="@+id/cog"
    app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

1 个答案:

答案 0 :(得分:0)

app:layout_constraintEnd_toStartOf="@+id/sog"添加到您的cog视图中

<com.example.testproj.NavTextDrawer
    android:id="@+id/cog"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintEnd_toStartOf="@+id/sog"
    app:layout_constraintHorizontal_weight="1"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />