无法使用指南删除边距
Can't remove margin with guidline
我有简单的视图,底部有片段容器按钮。
我已经使用水平引导线,现在我在按钮的顶部和底部都有边距。
我在代码中没有看到这个边距,那么为什么我有这个边距以及如何删除它?
<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">
<fragment
android:id="@+id/container"
android:layout_width="match_parent"
android:name="com.package.list.ListFragment"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/guideline2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</fragment>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline2"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.9" />
<Button
android:id="@+id/list_btn"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="List"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline2" />
</androidx.constraintlayout.widget.ConstraintLayout>
You will use a command inside Android Studio called go to declaration
which is cmd+B
on a Mac or ctrl+B
on Windows. I will just use ctrl+B
for simplicity.
回答
我认为这是因为应用于按钮的默认样式。如果你在 Android Studio 中搜索它,你实际上可以看到 Button
样式包含这样的背景:
<item name="android:background">@drawable/abc_btn_default_mtrl_shape</item>
然后当您 ctrl+B
这个文件时,您会看到名为 insetTop
和 insetBottom
的内容
<inset
android:insetTop="@dimen/abc_button_inset_vertical_material"
android:insetBottom="@dimen/abc_button_inset_vertical_material">
同样,ctrl+B
在里面,你终于看到它们都等于 6dp。所以在你的 main activity 中,你需要做的就是将 insetTop
和 insetBottom
设置为 0dp
,像这样:
<Button
android:id="@+id/list_btn"
android:layout_width="match_parent"
android:layout_height="0dp"
android:insetTop="0dp"
android:insetBottom="0dp"
android:text="List"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline2" />
我有简单的视图,底部有片段容器按钮。 我已经使用水平引导线,现在我在按钮的顶部和底部都有边距。 我在代码中没有看到这个边距,那么为什么我有这个边距以及如何删除它?
<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">
<fragment
android:id="@+id/container"
android:layout_width="match_parent"
android:name="com.package.list.ListFragment"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/guideline2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</fragment>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline2"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.9" />
<Button
android:id="@+id/list_btn"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="List"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline2" />
</androidx.constraintlayout.widget.ConstraintLayout>
You will use a command inside Android Studio called
go to declaration
which iscmd+B
on a Mac orctrl+B
on Windows. I will just usectrl+B
for simplicity.
回答
我认为这是因为应用于按钮的默认样式。如果你在 Android Studio 中搜索它,你实际上可以看到 Button
样式包含这样的背景:
<item name="android:background">@drawable/abc_btn_default_mtrl_shape</item>
然后当您 ctrl+B
这个文件时,您会看到名为 insetTop
和 insetBottom
<inset
android:insetTop="@dimen/abc_button_inset_vertical_material"
android:insetBottom="@dimen/abc_button_inset_vertical_material">
同样,ctrl+B
在里面,你终于看到它们都等于 6dp。所以在你的 main activity 中,你需要做的就是将 insetTop
和 insetBottom
设置为 0dp
,像这样:
<Button
android:id="@+id/list_btn"
android:layout_width="match_parent"
android:layout_height="0dp"
android:insetTop="0dp"
android:insetBottom="0dp"
android:text="List"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline2" />