Android 工具栏 - 以编程方式更改导航图标的高度和宽度
Android Toolbar - Change height and width of Navigation Icon Programmatically
我想以编程方式更改 Android 工具栏中导航图标(屏幕截图中的黑色圆圈)的高度和宽度。有什么办法吗?这不是工具栏徽标。我无法在 Styles xml 中更新工具栏主题,因为我希望它是动态的。请帮忙
我是这样做的:
toolbar= (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if(getSupportActionBar()!=null){
Drawable drawable= getResources().getDrawable(R.drawable.ic_sync_white_36dp);
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
Drawable newdrawable = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, 250, 250, true));
newdrawable.setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(newdrawable);
}
创建缩放位图时可以使用calculate-dp-from-pixels-in-android-programmatically and converting-pixels-to-dp。
我的Toolbar
:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
和截图:
另一种方法是在 Toolbar
中使用自定义布局,例如:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:background="@color/colorPrimary"
android:id="@+id/custom_toolbar_layout"
android:layout_height="wrap_content">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:tint="@android:color/holo_purple"
android:id="@+id/imageView"
android:gravity="center_vertical"
android:src="@drawable/ic_clear_black_36dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="My Custom Toolbar"
android:gravity="center_vertical"
android:textSize="20sp"
android:textColor="@android:color/white"
android:layout_gravity="center_horizontal" />
</LinearLayout>
</android.support.v7.widget.Toolbar>
如果您想访问工具栏中的任何视图,请参阅@Aleksandar Stefanović 的回答。您可以查看 Material design guidelines 以创建自定义 Toolbar
然后截图:
图标来自:Material Icons
如果您使用的是 appcompat 工具栏,它实际上就像一个普通的 ViewGroup。因此,您可以像访问任何其他 ViewGroup 一样轻松地访问其中的视图。
例如,如果您的工具栏中有一个 ImageView,您只需通过以下方式访问它:
getSupportActionBar().getCustomView().findViewById(R.id.imageView)
从那里,您只需将其调整为常规 ImageView。
在 AppCompatActivity 中试试这个
if(getSupportActionBar()!=null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
getSupportFragmentManager().popBackStack();
}});
在xml
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="90dp"
android:background="#434343"
android:elevation="4dp"
android:minHeight="90dp"
app:theme="@style/tool_bar_style" />
在styles.xml
<style name="tool_bar_style">
<item name="colorControlNormal">@color/white</item>
<item name="android:textColor">@color/text_color_main</item>
<item name="android:textColorPrimary">@color/text_color_main</item>
<item name="android:textColorSecondary">@color/text_color_main</item>
<item name="actionMenuTextColor">@color/text_color_main</item>
<item name="android:textSize">@dimen/text_size_default</item>
<item name="android:colorBackground">@color/toolbar_bg_color</item>
<item name="android:listPreferredItemHeightSmall">@dimen/button_default_height</item>
</style>
<style name="Toolbar.TitleText" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">">
<item name="android:textSize">@dimen/text_size_big</item>
</style>
在dimens.xml
<dimen name="text_size_big">14sp</dimen>
<dimen name="text_size_default">22sp</dimen>
<dimen name="button_default_height">90dp</dimen>
颜色
<color name="text_color_main">@color/clean_white</color>
<color name="toolbar_bg_color">#434343</color>
我是这样做的:
toolbar= (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if(getSupportActionBar()!=null){
Drawable drawable= getResources().getDrawable(R.drawable.ic_sync_white_36dp);
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
Drawable newdrawable = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, 250, 250, true));
newdrawable.setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(newdrawable);
}
创建缩放位图时可以使用calculate-dp-from-pixels-in-android-programmatically and converting-pixels-to-dp。
我的Toolbar
:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
和截图:
另一种方法是在 Toolbar
中使用自定义布局,例如:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:background="@color/colorPrimary"
android:id="@+id/custom_toolbar_layout"
android:layout_height="wrap_content">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:tint="@android:color/holo_purple"
android:id="@+id/imageView"
android:gravity="center_vertical"
android:src="@drawable/ic_clear_black_36dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="My Custom Toolbar"
android:gravity="center_vertical"
android:textSize="20sp"
android:textColor="@android:color/white"
android:layout_gravity="center_horizontal" />
</LinearLayout>
</android.support.v7.widget.Toolbar>
如果您想访问工具栏中的任何视图,请参阅@Aleksandar Stefanović 的回答。您可以查看 Material design guidelines 以创建自定义 Toolbar
然后截图:
图标来自:Material Icons
如果您使用的是 appcompat 工具栏,它实际上就像一个普通的 ViewGroup。因此,您可以像访问任何其他 ViewGroup 一样轻松地访问其中的视图。
例如,如果您的工具栏中有一个 ImageView,您只需通过以下方式访问它:
getSupportActionBar().getCustomView().findViewById(R.id.imageView)
从那里,您只需将其调整为常规 ImageView。
在 AppCompatActivity 中试试这个
if(getSupportActionBar()!=null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
getSupportFragmentManager().popBackStack();
}});
在xml
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="90dp"
android:background="#434343"
android:elevation="4dp"
android:minHeight="90dp"
app:theme="@style/tool_bar_style" />
在styles.xml
<style name="tool_bar_style">
<item name="colorControlNormal">@color/white</item>
<item name="android:textColor">@color/text_color_main</item>
<item name="android:textColorPrimary">@color/text_color_main</item>
<item name="android:textColorSecondary">@color/text_color_main</item>
<item name="actionMenuTextColor">@color/text_color_main</item>
<item name="android:textSize">@dimen/text_size_default</item>
<item name="android:colorBackground">@color/toolbar_bg_color</item>
<item name="android:listPreferredItemHeightSmall">@dimen/button_default_height</item>
</style>
<style name="Toolbar.TitleText" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">">
<item name="android:textSize">@dimen/text_size_big</item>
</style>
在dimens.xml
<dimen name="text_size_big">14sp</dimen>
<dimen name="text_size_default">22sp</dimen>
<dimen name="button_default_height">90dp</dimen>
颜色
<color name="text_color_main">@color/clean_white</color>
<color name="toolbar_bg_color">#434343</color>