首页 > 代码库 > Android 中 LayoutParams 的用法
Android 中 LayoutParams 的用法
一个控件应当使用它的父控件的 LayoutParams 类型。因此,一个 TableVow 应该使用 TableLayout.Params 。
所以,以一个 TableRow 为例:
TableRow tableRow = new TableRow(context); tableRow.setLayoutParams(new TableLayout.LayoutParams( TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT,1.0f));
当我没有指明 LayoutParams 的类型时,TableRow 没有能够自动适应屏幕长度。因为 TableRow 不认识 TableLayout 的大小。所以此时即使设置了 weight 也不好使。
[android-developers] Re: Possible bug in TableLayout
Romain Guy Mon, 16 Feb 2009 19:57:16 -0800
Your code is *NOT* equivalent to the XML. You are using the wrongLayoutParams everywhere. A widget must have the LayoutParams of its*parent*. Therefore, the rows must have TableLayout.LayoutParams, theTextViews must have TableRow.LayoutParams and the TableLayout musthave FrameLayout.LayoutParams.
Here is your code, corrected, and it works just fine.package com.test;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.widget.FrameLayout;import android.widget.TableLayout;import android.widget.TableRow;import android.widget.TextView;public class Test extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(buildTableViewFromSource()); } private View buildTableViewFromSource() { FrameLayout.LayoutParams pTable = new FrameLayout.LayoutParams( TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.FILL_PARENT); TableLayout table = new TableLayout(this); table.setBackgroundColor(Color.RED); table.setLayoutParams(pTable); TableRow rowTop = new TableRow(this); TableLayout.LayoutParams pRowTop = new TableLayout.LayoutParams( TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT); pRowTop.weight = 1; rowTop.setBackgroundColor(Color.BLUE); TextView txt = new TextView(this); txt.setText("Top Content"); rowTop.addView(txt, new TableRow.LayoutParams( TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT)); TableRow rowBottom = new TableRow(this); rowBottom.setBackgroundColor(Color.GREEN); TextView txtBottom = new TextView(this); txtBottom.setText("Bottom Content"); TableLayout.LayoutParams pRowBottom = new TableLayout.LayoutParams( TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT); rowBottom.addView(txtBottom, new TableRow.LayoutParams( TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT)); table.addView(rowTop, pRowTop); table.addView(rowBottom, pRowBottom); return table; }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。