Android 中 LayoutParams 的用法

來源:互聯網
上載者:User

標籤:android   style   blog   http   color   使用   

一個控制項應當使用它的父控制項的 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個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.