为什么 Material 设计工具栏有这种奇怪的填充?
Why does Material Design Toolbar have this strange padding?
在我的 ToolBar
和 android:padding=0dp
中,我有一个 LinearLayout
和 android:width=match_parent
和 android:layout_marginLeft="0dp"
。因此至少在宽度方向上,Toolbar
(在本例中为黑色)的任何部分都不应显示在 LinearLayout
(在本 SSCCE 中为红色)的两侧。
问题是 Toolbar 显示在子 LinearLayout 的左侧。 如何让 LinearLayout 跨越整个 Toolbar,这样 Toolbar 的任何部分都不会显示?
MainActivity.java:
package tests.example_one;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
@SuppressLint("NewApi")
public class MainActivity extends AppCompatActivity {
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.mainActivity_appBar);
setSupportActionBar(toolbar);
}
}
res/layout/activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/fullBackgroundPadding" >
<include layout="@layout/app_bar"
android:id="@+id/mainActivity_appBar" />
</LinearLayout>
res/layout/app_bar.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/appBarHeight"
android:background="#000"
android:padding="0dp" >
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F44336"
android:layout_marginLeft="0dp">
</LinearLayout>
</android.support.v7.widget.Toolbar>
res/values/dimens.xml
<resources>
<dimen name="fullBackgroundPadding">8dp</dimen>
<!-- App Bar -->
<dimen name="appBarHeight">48dp</dimen>
</resources>
黑色部分是工具栏应用于其内容的插图。将以下两行添加到您的 Toolbar
的 XML:
app:contentInsetStart="0dp"
app:contentInsetLeft="0dp"
此外,不要忘记 app
命名空间。
所以您实际上是在将 app_bar.xml 从
更改为
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/appBarHeight"
android:background="#000"
android:padding="0dp" >
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F44336"
android:layout_marginLeft="0dp">
</LinearLayout>
</android.support.v7.widget.Toolbar>
到
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="@dimen/appBarHeight"
android:background="#000"
android:padding="0dp"
app:contentInsetStart="0dp"
app:contentInsetLeft="0dp" >
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F44336">
</LinearLayout>
</android.support.v7.widget.Toolbar>
在我的 ToolBar
和 android:padding=0dp
中,我有一个 LinearLayout
和 android:width=match_parent
和 android:layout_marginLeft="0dp"
。因此至少在宽度方向上,Toolbar
(在本例中为黑色)的任何部分都不应显示在 LinearLayout
(在本 SSCCE 中为红色)的两侧。
问题是 Toolbar 显示在子 LinearLayout 的左侧。 如何让 LinearLayout 跨越整个 Toolbar,这样 Toolbar 的任何部分都不会显示?
MainActivity.java:
package tests.example_one;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
@SuppressLint("NewApi")
public class MainActivity extends AppCompatActivity {
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.mainActivity_appBar);
setSupportActionBar(toolbar);
}
}
res/layout/activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/fullBackgroundPadding" >
<include layout="@layout/app_bar"
android:id="@+id/mainActivity_appBar" />
</LinearLayout>
res/layout/app_bar.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/appBarHeight"
android:background="#000"
android:padding="0dp" >
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F44336"
android:layout_marginLeft="0dp">
</LinearLayout>
</android.support.v7.widget.Toolbar>
res/values/dimens.xml
<resources>
<dimen name="fullBackgroundPadding">8dp</dimen>
<!-- App Bar -->
<dimen name="appBarHeight">48dp</dimen>
</resources>
黑色部分是工具栏应用于其内容的插图。将以下两行添加到您的 Toolbar
的 XML:
app:contentInsetStart="0dp"
app:contentInsetLeft="0dp"
此外,不要忘记 app
命名空间。
所以您实际上是在将 app_bar.xml 从
更改为<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/appBarHeight"
android:background="#000"
android:padding="0dp" >
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F44336"
android:layout_marginLeft="0dp">
</LinearLayout>
</android.support.v7.widget.Toolbar>
到
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="@dimen/appBarHeight"
android:background="#000"
android:padding="0dp"
app:contentInsetStart="0dp"
app:contentInsetLeft="0dp" >
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F44336">
</LinearLayout>
</android.support.v7.widget.Toolbar>