设置文字位于屏幕中间

开始的时候把问题想复杂了,还好同事提醒了一下。主要描述一种思路,再配套一些关键代码。
问题场景:标题栏一般分 返回、内容、设置(或者其它) 三部分,文字一般处于屏幕中间位置。假如右侧 设置 隐藏的时候 ,文字相对于屏幕就有些不在中间地方了。
思路,首先可以动态控制内容的 padding 或者 margin 来进行控制。具体偏移值得计算如下:

public  int px2dip(float pxValue){
    float scale = getResources().getDisplayMetrics().density;
    return (int) (pxValue / scale * 3 + 0.5f);// 3 是 自己定义的
}

具体设置偏移值的代码举例如下:

private void initEdtCenterLocation(){
    int imgW = img.getWidth();//图片宽度
    int result = px2dip(imgW);
    editText.setPadding(result,0,0,0);
}

注意:
1、获取控件宽高的代码要在UI绘制完成后 获取,否则获取到的值为0
2、如果内容过长会产生换行的情况,这时候要避免因为设置 padding 或者 margin而导致的空白问题,这里需要提前测量文字所要绘制的长度大小,这里可以具体百度一下,是有这方面代码的。
3、如果中间的控件是EditText ,用户可以进行输入,这里要实现EditText的TextWatch监听,来进行动态更改偏移值。

猜你喜欢

转载自blog.csdn.net/Mr_Tony/article/details/79065077