Привет.
Я хочу переместить значок влево на панели инструментов.
В menu.xml нет свойства margin.
Я хочу установить поле для значка меню переполнения.
Как установить маржу?
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Activity_main.xml
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id = "@+id/coordinator"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
app:layout_constraintTop_toTopOf = "parent">
<com.google.android.material.appbar.AppBarLayout
android:id = "@+id/appbar"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:background = "@android:color/transparent"
app:elevation = "0dp">
<androidx.appcompat.widget.Toolbar
android:id = "@+id/toolbar"
android:layout_width = "match_parent"
android:layout_height = "?attr/actionBarSize"
app:contentInsetLeft = "0dp"
app:contentInsetStart = "0dp"
app:titleMarginStart = "30dp" />
</com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
меню.xml
<?xml version = "1.0" encoding = "utf-8"?>
<menu 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"
tools:context = ".MainActivity">
<item
android:icon = "@drawable/ic_action_add"
android:title = "A D D"
app:showAsAction = "always" />
</menu>
Вы должны использовать контейнер внутри панели инструментов. Таким образом, вы можете управлять им, как хотите.
Обновление: вы можете попробовать заменить из файла стиля?
<style name = "StyleSampleName" parent = "@android:style/Widget.ActionButton">
<item name = "android:drawablePadding">@dimen/style_sample_padding</item>
</style>
Размер:
<dimen name = "style_sample_padding">5dp</dimen>
Тема:
<style name = "Theme.YourUseTheme"
parent = "Theme.AppCompat.Light.NoActionBar">
<item name = "android:actionButtonStyle">@style/StyleSampleName</item>
</style>
Вы можете добавить отступ в конец панели инструментов и использовать его как supportActionBar
Шаг 1: Удалите ActionBar
из styles.xml, например, используйте Theme.AppCompat.DayNight.NoActionBar
в качестве темы.
<resources>
<!-- Base application theme. -->
<style name = "AppTheme" parent = "Theme.AppCompat.DayNight.NoActionBar">
....
</style>
</resources>
Шаг 2: Добавьте отступ в конец toolbar
в макете; Я добавил 32dp, вы можете настроить его как вам нужно
<?xml version = "1.0" encoding = "utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
android:id = "@+id/coordinator"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
app:layout_constraintTop_toTopOf = "parent">
<com.google.android.material.appbar.AppBarLayout
android:id = "@+id/appbar"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
app:elevation = "0dp">
<androidx.appcompat.widget.Toolbar
android:id = "@+id/toolbar"
android:layout_width = "match_parent"
android:layout_height = "?attr/actionBarSize"
android:paddingEnd = "32dp"
android:paddingRight = "32dp"
app:contentInsetLeft = "0dp"
app:contentInsetStart = "0dp"
app:titleMarginStart = "30dp" />
</com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Шаг 3: Установите панель инструментов как SupportActionBar
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// setting the SupportActionBar to my customized toolbar
setSupportActionBar((findViewById(R.id.toolbar)));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
}
Результат
Спасибо. Могу я задать еще один вопрос? На шаге 2, что означает app:contentInsetLeft
, app:contentInsetStart
? Причина, по которой я спрашиваю, заключается в том, что я оставил android:paddingEnd
, android:paddingRight
и удалил contentInset
свойства. Но результат был таким же, как и в первый раз.
Добро пожаловать :) .. они используются для добавления некоторого поля к представлениям на панелях инструментов (любая панель инструментов, а не только панель действий), но они не подходят для значков меню или кнопок навигации, таких как стрелка назад >> Как указано в документации Minimum inset for content views within a bar. Navigation buttons and menu views are excepted. Only valid for some themes and configurations
вы можете удалить их из моего решения, если хотите, так как я просто оставил их на всякий случай, если они вам понадобятся >> и мне не хотелось менять ваши вещи в ваших общих макетах
Я добавил код в текст. Это неправильный путь? Могу ли я использовать menu.xml? Вы хотите добавить ImageView на панель инструментов?