Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中,如何在操作栏中显示用户信息?_Android_Android Actionbar - Fatal编程技术网

在Android中,如何在操作栏中显示用户信息?

在Android中,如何在操作栏中显示用户信息?,android,android-actionbar,Android,Android Actionbar,在我的应用程序中,我想将用户配置文件图像放入ImageView中,并将其旁边的用户名显示在操作栏的右侧 有谁能帮助我,如何实现它吗?您可以做的是为操作栏创建自定义布局,然后将此自定义布局分配给操作栏 ActionBar actionBar = supportActionBar; actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayShowCustomEnabled(true); actionB

在我的应用程序中,我想将用户配置文件图像放入
ImageView
中,并将其旁边的用户名显示在操作栏的右侧


有谁能帮助我,如何实现它吗?

您可以做的是为操作栏创建自定义布局,然后将此自定义布局分配给操作栏

 ActionBar actionBar = supportActionBar;
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#363636")));
    //   actionBar.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.bg_side_menu));
    ActionBar.LayoutParams params = new ActionBar.LayoutParams(//Center the textview in the ActionBar !
            ActionBar.LayoutParams.MATCH_PARENT,
            ActionBar.LayoutParams.MATCH_PARENT,
            Gravity.CENTER);
    View viewActionBar = ((Activity) context).getLayoutInflater().inflate(R.layout.general_top_header, null);
    actionBar.setCustomView(viewActionBar, params);

    TextView _Header_Text_View = (TextView) viewActionBar.findViewById(R.id.header_Name);
    _Header_Text_View.setText("" + header_Text);
    final ImageView back_Button = (ImageView) viewActionBar.findViewById(R.id.imageView);

    back_Button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {




        }
    });
您的general_top_header.xml如下


您可以做的是为操作栏创建自定义布局,然后将此自定义布局指定给操作栏

 ActionBar actionBar = supportActionBar;
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#363636")));
    //   actionBar.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.bg_side_menu));
    ActionBar.LayoutParams params = new ActionBar.LayoutParams(//Center the textview in the ActionBar !
            ActionBar.LayoutParams.MATCH_PARENT,
            ActionBar.LayoutParams.MATCH_PARENT,
            Gravity.CENTER);
    View viewActionBar = ((Activity) context).getLayoutInflater().inflate(R.layout.general_top_header, null);
    actionBar.setCustomView(viewActionBar, params);

    TextView _Header_Text_View = (TextView) viewActionBar.findViewById(R.id.header_Name);
    _Header_Text_View.setText("" + header_Text);
    final ImageView back_Button = (ImageView) viewActionBar.findViewById(R.id.imageView);

    back_Button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {




        }
    });
您的general_top_header.xml如下


如果不想更改标题的布局,请使用此选项。它是带有通用映像加载程序()的版本。但若你们不想要这个库,你们可以使用另一个纯位图文件的代码

更改后,您的应用程序将如下所示

public void changeAvatarAndTitle(字符串登录,字符串化身){
如果(android.os.Build.VERSION.SDK_INT>=11){
最终ActionBar ActionBar=getActionBar();
字符串login=login;
字符串urlOfAvatr=AVATARURL;
试一试{
if(imageLoader!=null)
loadImage(urlOfAvatar,新的SimpleImage加载侦听器(){
@凌驾
public void onLoadingComplete(字符串imageUri、视图视图、位图加载图像){
//用位图做任何你想做的事
位图b=加载图像;
双密度=getResources().getDisplayMetrics().density;
如果(密度>=4.0){
//“xxxhdpi”;
b=Global.getResizedBitmap(b,192,192);
}
如果(密度>=3.0和密度<4.0){
//xxhdpi
b=Global.getResizedBitmap(b,144,144);
}
如果(密度>=2.0){
//xhdpi
b=Global.getResizedBitmap(b,96,96);
}
如果(密度>=1.5和密度<2.0){
//hdpi
b=Global.getResizedBitmap(b,72,72);
}
如果(密度>=1.0和密度<1.5){
//mdpi
b=Global.getResizedBitmap(b,48,48);
}
b=全局.getRoundedCornerBitmap(b,100);
Drawable d=新的位图Drawable(getResources(),b);
如果(android.os.Build.VERSION.SDK_INT>14){
actionBar.setLogo(d);
}
}
});
actionBar.setDisplayShowHomeEnabled(真);
actionBar.setTitle(“+login”);
actionBar.setDisplayUseLogoEnabled(true);
}捕获(JSONException e){
e、 printStackTrace();
}
}
}
公共静态位图getResizedBitmap(位图bm、int-newWidth、int-newHeight){
int width=bm.getWidth();
int height=bm.getHeight();
浮动比例宽度=((浮动)新宽度)/宽度;
浮动刻度高度=((浮动)新高度)/高度;
//为操纵创建一个矩阵
矩阵=新矩阵();
//调整位图的大小
矩阵。后标度(标度宽度、标度高度);
//“重新创建”新位图
Bitmap resizedBitmap=Bitmap.createBitmap(bm,0,0,宽度,高度,矩阵,false);
返回resizedBitmap;
}
没有来自Internet的通用图像加载器的版本

public void changeAvatarAndTitle(String LOGIN, String AVATARURL, Bitmap loadedImage){
    if (android.os.Build.VERSION.SDK_INT >= 11) {
        final ActionBar actionBar = getActionBar();
        String login = LOGIN;
        String urlOfAvatr = AVATARURL;
        Bitmap b = loadedImage;
        double density = getResources().getDisplayMetrics().density;
        if (density >= 4.0) {
            //"xxxhdpi";
            b = Global.getResizedBitmap(b, 192, 192);
        }
        if (density >= 3.0 && density < 4.0) {
            //xxhdpi
            b = Global.getResizedBitmap(b, 144, 144);
        }
        if (density >= 2.0) {
            //xhdpi
            b = Global.getResizedBitmap(b, 96, 96);
        }
        if (density >= 1.5 && density < 2.0) {
            //hdpi
            b = Global.getResizedBitmap(b, 72, 72);
        }
        if (density >= 1.0 && density < 1.5) {
            //mdpi
            b = Global.getResizedBitmap(b, 48, 48);
        }
        b = Global.getRoundedCornerBitmap(b, 100);
        Drawable d = new BitmapDrawable(getResources(), b);
        if (android.os.Build.VERSION.SDK_INT > 14) {
            actionBar.setLogo(d);
        }                   
        actionBar.setDisplayShowHomeEnabled(true);
        actionBar.setTitle(" " + login);
        actionBar.setDisplayUseLogoEnabled(true);
    }
}


public static Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight) {
    int width = bm.getWidth();
    int height = bm.getHeight();
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;
    // CREATE A MATRIX FOR THE MANIPULATION
    Matrix matrix = new Matrix();
    // RESIZE THE BIT MAP
    matrix.postScale(scaleWidth, scaleHeight);

    // "RECREATE" THE NEW BITMAP
    Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false);
    return resizedBitmap;
}
public void change avatarandTitle(字符串登录、字符串AVATARURL、位图加载图像){
如果(android.os.Build.VERSION.SDK_INT>=11){
最终ActionBar ActionBar=getActionBar();
字符串login=login;
字符串urlOfAvatr=AVATARURL;
位图b=加载图像;
双密度=getResources().getDisplayMetrics().density;
如果(密度>=4.0){
//“xxxhdpi”;
b=Global.getResizedBitmap(b,192,192);
}
如果(密度>=3.0和密度<4.0){
//xxhdpi
b=Global.getResizedBitmap(b,144,144);
}
如果(密度>=2.0){
//xhdpi
b=Global.getResizedBitmap(b,96,96);
}
如果(密度>=1.5和密度<2.0){
//hdpi
b=Global.getResizedBitmap(b,72,72);
}
如果(密度>=1.0和密度<1.5){
//mdpi
b=Global.getResizedBitmap(b,48,48);
}
b=全局.getRoundedCornerBitmap(b,100);
Drawable d=新的位图Drawable(getResources(),b);
如果(android.os.Build.VERSION.SDK_INT>14){
actionBar.setLogo(d);
}                   
actionBar.setDisplayShowHomeEnabled(真);
actionBar.setTitle(“+login”);
actionBar.setDisplayUseLogoEnabled(true);
}
}
公共静态位图getResizedBitmap(位图bm、int-newWidth、int-newHeight){
int width=bm.getWidth();
int height=bm.getHeight();
浮动比例宽度=((浮动)新宽度)/宽度;
浮动刻度高度=((浮动)新高度)/高度;
//为操纵创建一个矩阵
矩阵=新矩阵();
//调整位图的大小
矩阵。后标度(标度宽度、标度高度);
//“重新创建”新位图
Bitmap resizedBitmap=Bitmap.createBitmap(bm,0,0,宽度,高度,矩阵,false);
返回resizedBitmap;
}

如果不想更改页眉的布局,请使用此选项。它是带有通用映像加载程序()的版本。但若你们不想要这个库,你们可以使用另一个纯位图文件的代码

更改后,您的应用程序将如下所示

public void changeAvatarAndTitle(字符串登录,字符串化身){
如果(android.os.Build.VERSION.SDK_INT
public class Your_Activity extends ActionBarActivity{
}
public void changeAvatarAndTitle(String LOGIN, String AVATARURL){
    if (android.os.Build.VERSION.SDK_INT >= 11) {
        final ActionBar actionBar = getActionBar();
        String login = LOGIN;
        String urlOfAvatr = AVATARURL;
        try {
            if (imageLoader != null)
                imageLoader.loadImage(urlOfAvatar, new SimpleImageLoadingListener() {
                    @Override
                    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                        // Do whatever you want with Bitmap
                        Bitmap b = loadedImage;
                        double density = getResources().getDisplayMetrics().density;
                        if (density >= 4.0) {
                            //"xxxhdpi";
                            b = Global.getResizedBitmap(b, 192, 192);
                        }
                        if (density >= 3.0 && density < 4.0) {
                            //xxhdpi
                            b = Global.getResizedBitmap(b, 144, 144);
                        }
                        if (density >= 2.0) {
                            //xhdpi
                            b = Global.getResizedBitmap(b, 96, 96);
                        }
                        if (density >= 1.5 && density < 2.0) {
                            //hdpi
                            b = Global.getResizedBitmap(b, 72, 72);
                        }
                        if (density >= 1.0 && density < 1.5) {
                            //mdpi
                            b = Global.getResizedBitmap(b, 48, 48);
                        }

                        b = Global.getRoundedCornerBitmap(b, 100);

                        Drawable d = new BitmapDrawable(getResources(), b);

                        if (android.os.Build.VERSION.SDK_INT > 14) {
                            actionBar.setLogo(d);
                        }
                    }
                });
            actionBar.setDisplayShowHomeEnabled(true);
            actionBar.setTitle(" " + login);
            actionBar.setDisplayUseLogoEnabled(true);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}


public static Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight) {
    int width = bm.getWidth();
    int height = bm.getHeight();
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;
    // CREATE A MATRIX FOR THE MANIPULATION
    Matrix matrix = new Matrix();
    // RESIZE THE BIT MAP
    matrix.postScale(scaleWidth, scaleHeight);

    // "RECREATE" THE NEW BITMAP
    Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false);
    return resizedBitmap;
}
public void changeAvatarAndTitle(String LOGIN, String AVATARURL, Bitmap loadedImage){
    if (android.os.Build.VERSION.SDK_INT >= 11) {
        final ActionBar actionBar = getActionBar();
        String login = LOGIN;
        String urlOfAvatr = AVATARURL;
        Bitmap b = loadedImage;
        double density = getResources().getDisplayMetrics().density;
        if (density >= 4.0) {
            //"xxxhdpi";
            b = Global.getResizedBitmap(b, 192, 192);
        }
        if (density >= 3.0 && density < 4.0) {
            //xxhdpi
            b = Global.getResizedBitmap(b, 144, 144);
        }
        if (density >= 2.0) {
            //xhdpi
            b = Global.getResizedBitmap(b, 96, 96);
        }
        if (density >= 1.5 && density < 2.0) {
            //hdpi
            b = Global.getResizedBitmap(b, 72, 72);
        }
        if (density >= 1.0 && density < 1.5) {
            //mdpi
            b = Global.getResizedBitmap(b, 48, 48);
        }
        b = Global.getRoundedCornerBitmap(b, 100);
        Drawable d = new BitmapDrawable(getResources(), b);
        if (android.os.Build.VERSION.SDK_INT > 14) {
            actionBar.setLogo(d);
        }                   
        actionBar.setDisplayShowHomeEnabled(true);
        actionBar.setTitle(" " + login);
        actionBar.setDisplayUseLogoEnabled(true);
    }
}


public static Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight) {
    int width = bm.getWidth();
    int height = bm.getHeight();
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;
    // CREATE A MATRIX FOR THE MANIPULATION
    Matrix matrix = new Matrix();
    // RESIZE THE BIT MAP
    matrix.postScale(scaleWidth, scaleHeight);

    // "RECREATE" THE NEW BITMAP
    Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false);
    return resizedBitmap;
}