我希望在注销图标之前在Action Bar上显示个人资料图片,但是它会在App标题之后显示图像。我使用Image View和Picasso来使用volley从服务器加载图像。怎么能实现这个目标?
actionBar.setDisplayOptions(actionBar.getDisplayOptions()
| ActionBar.DISPLAY_SHOW_CUSTOM);
imageView.setScaleType(ImageView.ScaleType.CENTER);
Picasso.with(HomeActivity.this).load(AppConfig.profilePic + image).placeholder(R.drawable.profile).transform(new CircleTransform()).fit().into(imageView);
ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT, Gravity.RIGHT
| Gravity.CENTER_VERTICAL);
layoutParams.gravity = Gravity.RIGHT;
imageView.setLayoutParams(layoutParams);
actionBar.setCustomView(imageView);
答案 0 :(得分:3)
您想要创建如下所示的自定义工具栏
<?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:id="@+id/toolbarLogo"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/ivBackArrow"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_centerVertical="true"
android:background="@drawable/ic_back_arrow_black" />
<TextView
android:id="@+id/toolbar_text_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="left|center_vertical"
android:singleLine="true"
android:layout_toRightOf="@+id/ivBackArrow"
android:layout_marginLeft="4dp"
android:layout_toLeftOf="@+id/iv_profile"
android:layout_centerHorizontal="true"
android:text="ALERT"
android:textColor="@color/colorBlack"
android:textSize="20sp" />
<ImageView
android:id="@+id/iv_profile"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/iv_logout"
android:background="@drawable/ic_back_arrow_black" />
<ImageView
android:id="@+id/iv_logout"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:background="@drawable/ic_back_arrow_black" />
</RelativeLayout>
</android.support.v7.widget.Toolbar>
答案 1 :(得分:3)
这不能作为标准首先显示标题 解决方案&gt;&gt;使用自定义操作栏 1-建立自己的布局 2-在样式文件中将主题更改为您的应用程序的NoAction栏 3- use include将您的自定义actionBar添加到您想要的任何布局
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags="scroll|enterAlways"
app:layout_collapseMode="pin">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/toolbar_logo"
android:src="@drawable/logo"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="?attr/actionBarSize"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp" />
<TextView
android:id="@+id/toolbar_title"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="?attr/actionBarSize"
android:layout_gravity="center"
android:gravity="center_vertical"
android:visibility="gone"
android:text="@string/app_name"
android:textColor="@color/white"
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"
/>
</FrameLayout>
</android.support.v7.widget.Toolbar>
答案 2 :(得分:0)
您可以将图片设置为app徽标。请尝试以下代码
Picasso.with(this).load(yourImageUrl).into(new Target()
{
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from)
{
Drawable d = new BitmapDrawable(getResources(), bitmap);
ab.setIcon(d);
ab.setDisplayShowHomeEnabled(true);
ab.setDisplayHomeAsUpEnabled(true);
}
@Override
public void onBitmapFailed(Drawable errorDrawable)
{
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable)
{
}
});