Android开发_精准排布控件位置
Android 开发 _ 精准排布控件位置
#移动开发 #Android
1. 简述
在 Android 系统上开发程序,很多时候需要精准的排布控件的位置和大小.并且适合各种比例的屏幕(4:3,16:9…),下面分别介绍在高版本和低版本的 Android 中的实现方法.
2. Android Studio/高版本 Android 实现
- 说明
使用高版本 android 内置的 android-support-percent-lib 库,通过设置百分比的方法,实现了该功能,Demo 一般都是 android
studio,Eclipse 下需要下载支持库:[http://download.csdn.net/detail/sbsujjbcy/8857747
](http://download.csdn.net/detail/sbsujjbcy/8857747)
在 Layout
中设置百分比:PercentRelativeLayout/PercentFrameLayout/PercentLinearLayout
Layout 文件
<android.support.percent.PercentFrameLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="0dp" android:layout_height="0dp" android:background="#44ff0000" android:text="width:30%,height:20%" app:layout_heightPercent="20%" app:layout_marginLeftPercent="10%" app:layout_marginTopPercent="40%" app:layout_widthPercent="30%"/>
</android.support.percent.PercentFrameLayout>
相关属性:
layout_widthPercent
layout_heightPercent
layout_marginPercent
layout_marginLeftPercent
layout_marginTopPercent
layout_marginRightPercent
layout_marginBottomPercent
layout_marginStartPercent
layout_marginEndPercent
- 修改 build.gradle
在 dependencies{}加
compile 'com.android.support:percent:22.2.0'
3. 使用 Eclipse/低版本 Android 实现
说明
推荐用此方法,它的通用性更强,适合各个 Android 版本,无需外加扩展库,对于 layout 按一定比例或规则排列的界面更方便使用。Layout 文件
<TextView android:id="@+id/txt" android:layout_width="0dp" android:layout_height="0dp" android:layout_gravity="left|top" android:background="#44ff0000" android:text="testme"/>
Java 程序
package com.test.testme;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.RelativeLayout;
public class testme extends Activity {
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView txtView = (TextView) findViewById(R.id.txt); RelativeLayout.LayoutParams params =(RelativeLayout.LayoutParams)txtView.getLayoutParams(); params.width = 100; params.height = 100; params.setMargins(100,200,0,0); txtView.setLayoutParams(params); }
}