赞
踩
一. 如果要实现诸如 2条线 宽度相同 并且上面字的在2条线中间 如图
1. 实现过程 先实现2条不同颜色的线长度相同并居中显示
布局文件如下:
<View
android:layout_width="110dp"
android:layout_height="1dp"
android:layout_marginTop="5dp"
android:layout_marginLeft="50dp"
android:background="@color/top_bar_normal_bg"
android:layout_below="@+id/editText"
android:id="@+id/line1" />
<View
android:id="@+id/line2"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="5dp"
android:background="@android:color/white"
android:layout_toRightOf="@+id/line1"
android:layout_below="@+id/editText"
android:layout_marginRight="50dp"/>
这样能够基本实现2个line 右边对齐 ,但是如果要做到完全居中,则要用 java 获取设备的宽度 然后在计算长度并更新line的长度了
2.获取android 的当前宽高,然后计算出每条线的长度这样就能做到自适应了。
android 代码如下:
public class Displaymetrics {
private static Displaymetrics instance = null;
public static Displaymetrics getInstance() {
if (instance == null) {
instance = new Displaymetrics();
}
return instance;
}
//获取运行屏幕宽度
public int getScreenWidth(WindowManager windowManager){
DisplayMetrics dm = new DisplayMetrics();
windowManager.getDefaultDisplay().getMetrics(dm);
//宽度 dm.widthPixels
//高度 dm.heightPixels
Log.d("widthPixels", String.valueOf(dm.widthPixels));
return dm.widthPixels;
}
//DP转PX
public static int dp2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
//PX转DP
private static int px2dp(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
}
我这里写了个获取当前设备宽高的单例类,然后接下来就是算出line1的长度了
Displaymetrics displaymetrics = Displaymetrics.getInstance();
line1.getLayoutParams().width = displaymetrics.getScreenWidth(getWindowManager())/2-displaymetrics.dp2px(this,50);
到这一步 就能实现line1 跟line2 居中并长度相同,接下来 就要开始将上面的字居中并对齐了
3.完成上面的字的对齐
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/editText"
android:layout_marginTop="99dp"
android:textColor="@color/top_bar_normal_bg"
android:textSize="@dimen/login_tab_fontsize"
android:text="普通登录"
android:layout_marginLeft="50dp"
android:layout_alignRight="@+id/line1"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTex2"
android:textColor="@android:color/white"
android:textSize="@dimen/login_tab_fontsize"
android:text="手机验证码登录"
android:onClick="changePhoneLogin"
android:layout_marginTop="99dp"
android:layout_marginRight="50dp"
android:layout_alignLeft="@+id/line2"
android:gravity="center"
android:layout_alignParentRight="true"/>
具体就是设为match_parent然后设为center 然后text1的android:layout_alignRight设为line1,text2的android:layout_alignLeft 设为line2,这样就完成了相对复杂页面的自适应布局。
如有不理解的地方我们可以互相交流 qq 1064480036@qq.com
热爱生活,热爱编程
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。