Android基础:代码中实现界面动态布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

<TextView

android:id="@+id/top_tv"

android:layout_width="match_parent"

android:layout_height="30dp"

android:background="#ffffff"

android:gravity="center"

android:text="在代码中动态布局"

android:textColor="#7B68EE" />

<LinearLayout

android:id="@+id/child_layout"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_below="@id/top_tv"

android:orientation="vertical" >

</LinearLayout>

</RelativeLayout>

--------------------------------------------------------------

public class TestActivity extends Activity implements OnClickListener {

private LinearLayout childLinLayout;

private List<Map<String, String>> viewList = new ArrayList<Map<String, String>>();

private int[] colors = { R.color.Color1, R.color.Color2, R.color.Color3, R.Color.color4, R.color.Color5};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.layout_main);

/**DisplayMetrics提供了一种关于显示的通用信息,如显示大小,分辨率和字体等*/

DisplayMetrics metrics = new DisplayMetrics();

/**获取屏幕分辨率及DisplayMetrics*/

getWindowManager().getDefaultDisplay().getMetrics(metrics);

/**设置两个宽度*/

int width1 = (metrics.widthPixels * 4 / 7);

int width2 = metrics.widthPixels * 3 / 7;

/**设置高度*/

int height = 80;

childLinLayout = (LinearLayout) findViewById(R.id.child_layout);

getListData();

for (int i = 0; i < viewList.size(); i++) {

/**动态设置布局*/

LinearLayout layout1 = new LinearLayout(this);

layout1.setOrientation(LinearLayout.HORIZONTAL);

layout1.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

int i1 = (i + 1) * 2 - 1;

int i2 = (i + 1) * 2;

TextView tv1 = new TextView(this);

tv1.setId(i1);

tv1.setOnClickListener(this);

tv1.setGravity(Gravity.CENTER_VERTICAL);

tv1.setText(viewList.get(i).get("left"));

TextView tv2 = new TextView(this);

tv2.setId(i2);

tv2.setOnClickListener(this);

tv2.setGravity(Gravity.CENTER_VERTICAL);

tv2.setText(viewList.get(i).get("right"));

if (i % 2 == 0) {

tv1.setWidth(width1);

tv1.setHeight(height);

tv1.setBackgroundResource(colors[0]);

tv2.setWidth(width2);

tv2.setHeight(height);

tv2.setBackgroundResource(colors[1]);

}

else {

tv1.setWidth(width2);

tv1.setHeight(height);

tv1.setBackgroundResource(colors[2]);

tv2.setWidth(width1);

tv2.setHeight(height);

tv2.setBackgroundResource(colors[4]);

}

layout1.addView(tv1);

layout1.addView(tv2);

childLinLayout.addView(layout1);

}

}

/**添加文字数据*/

private void getListData() {

for (int i = 0; i < 6; i++) {

Map<String, String> strMap = new HashMap<String, String>();

strMap.put("left", "这是左侧数据" + (i + 1) + "left");

strMap.put("right", "这是右侧数据" + (i + 1) + "right");

viewList.add(strMap);

}

}

@Override

public void onClick(View v) {

TextView tv = (TextView) findViewById(v.getId());

String content = tv.getText().toString();

switch (v.getId()) {

case 1:

showToastMsg(content);

break;

case 2:

showToastMsg(content);

break;

case 3:

showToastMsg(content);

break;

case 4:

showToastMsg(content);

break;

case 5:

showToastMsg(content);

break;

case 6:

showToastMsg(content);

break;

case 7:

showToastMsg(content);

break;

case 8:

showToastMsg(content);

break;

case 9:

showToastMsg(content);

break;

case 10:

showToastMsg(content);

break;

case 11:

showToastMsg(content);

break;

case 12:

showToastMsg(content);

break;

}

}

private void showToastMsg(String content) {

Toast.makeText(TestActivity.this, content + content, Toast.LENGTH_SHORT).show();

}

}

--------res/values/colors.xml-----------------------------

<?xml version="1.0" encoding="utf-8"?>

<resources>

<color name="Color1">#F0F0F0</color>

<color name="Color2">#D0D0D0</color>

<color name="Color3">#EC182E</color>

<color name="Color4">#C41e85</color>

<color name="Color5">#8B008B</color>

</resources>

时间: 2024-10-26 16:37:52

Android基础:代码中实现界面动态布局的相关文章

WPF实现界面动态布局

以前总觉得动态布局是个很麻烦的问题,是个很需要功力的问题.但是貌似在.NET中,在WPF中却不是那么的麻烦.下面介绍我现在实现的一个动态布局的实例. 因为有需求,所以困难得克服!而我们的需求表名,不同的用户需要的界面元素是不一样的,我们总不能每次都去修改代码吧!所以,需要完成动态布局. 这里主要完成这样一个功能: 1.动态画线 2.动态new控件 3.线和控件都是可拖拽并随意放置位置的 4.线和控件是可删除的 5.控件是可绑定属性和事件的 要完成这样的功能,我们首先得定义三个鼠标事件,即:左键d

android在代码中四种设置控件背景颜色的方法(包括RGB)

转载请注明出处: http://blog.csdn.net/fth826595345/article/details/9208771  TextView tText=(TextView) findViewById(R.id.textv_name); //第1种: tText.setTextColor(android.graphics.Color.RED);//系统自带的颜色类 // 第2种: tText.setTextColor(0xffff00ff);//0xffff00ff是int类型的数据

android 在代码中设置布局居中layout_gravity,layout_margin的方法

在代码中设置布局居中,翻看api可以知道view中有setGravity,setPadding,但是没有直接的setLayoutGravity,setMargin等方法.下面将在代码中实现类似布局中layout_gravity,layout_margin的方法. 可以通过设置view里面的 LayoutParams 设置,而这个LayoutParams是根据该view在不同的GroupView而不同的. 1.代码中设置layout_gravity LinearLayout layoutTop=(

Android基础之——startActivityForResult启动界面并返回数据,上传头像

在android应用的开发过程中,经常会出现启动一个界面后填写部分内容后带着数据返回启动前的界面,最典型的应用就是登录过程.在很多应用程序的模块中,都有"我的"这个模块,在未登录状态下点击其中的某一项,就会弹出登录界面,登录完成后回到我的界面,会显示一些登录后的数据,这个功能的实现就要用到startActivityForResult. 下面通过一个小demo来说明一下startActivityForResult的使用,以及在实际开发中的一些应用. demo的效果图如下: 主界面布局:

Android 通过代码改变控件的布局方式

在很多情况下当我们在xml中布局的方式并不能满足我们的要求,而这时我们就需要通过在代码中控制控件的布局根据不同的条件来控制布局.首先来了解一下安卓中的一些单位 dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖像素.px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多.需要注意的是:当我们在XML布局

Android 在代码中安装 APK 文件

废话不说,上代码 private void install(String filePath) { Log.i(TAG, "开始执行安装: " + filePath); File apkFile = new File(filePath); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (Build.VERSION.SDK_INT >

C#界面动态布局 界面控件随着界面大小尺寸变化而变化

要想写一个漂亮的界面,光靠利用Anchor和Dock属性是远远不够的,我们需要用到相对布局,就是不管窗口大小怎么变化,控件相对父控件的相对位置保持不变.可惜c#里没有提供按照百分比布局.所以只能自己再resize()事件里调整控件位置. 首先在窗体的构造函数里保存父窗体的长宽,以及每个控件的X,Y坐标的相对位置: int count = this.Controls.Count * 2 + 2; float [] factor=new float [count]; int i = 0; facto

android在代码中四种设置控件(以及TextView的文字颜色)背景颜色的方法

http://blog.csdn.net/fth826595345/article/details/9208771 主题 TextView 转载请注明出处: http://blog.csdn.net/fth826595345/article/details/9208771 直接上代码吧,注释解说: TextView tText=(TextView) findViewById(R.id.textv_name); //第1种: tText.setTextColor(android.graphics.

在Android java代码中如何改变文件的权限

在LINUX下每个文件都有一个权限的属性 ,那么在Android中怎么用java改变某个文件的权限呢? Android中有两种方法可以改变文件的权限 1. 用openFileOutput方法: FileOutputStream fos; fos = openFileOutput("filename", MODE_WORLD_READABLE);  FileOutputStream android.content.ContextWrapper .openFileOutput(String