2013-10-23 77 views
0

我有簡單的組件 - InfoPanel擴展LinearLayout與其他3個線性佈局裏面。這3個線性佈局中的每一個都包含2個文字瀏覽。Android自定義組件的寬度不匹配父項

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#F0F" 
    android:orientation="horizontal" 
    android:baselineAligned="false" > 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.3" 
     android:background="@android:color/transparent" 
     android:gravity="left|center_vertical" > 

       <TextView 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="0.5" 
        android:background="@android:color/transparent" 
        android:gravity="right|center_vertical" 
        android:text="@string/info_lineM" /> 

       <TextView 
        android:id="@+id/info_lineM" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="0.5" 
        android:background="@android:color/transparent" 
        android:gravity="left|center_vertical"/> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.4" 
     android:gravity="center_horizontal|center_vertical" 
       android:background="@android:color/transparent"> 

       <TextView 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="0.5" 
        android:background="@android:color/transparent" 
        android:gravity="right|center_vertical" 
        android:text="@string/info_lineC" /> 

       <TextView 
        android:id="@+id/info_lineC" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="0.5" 
        android:background="@android:color/transparent" 
        android:gravity="left|center_vertical" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.3" 
     android:gravity="right|center_vertical" 
       android:background="@android:color/transparent"> 

       <TextView 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="0.5" 
        android:background="@android:color/transparent" 
        android:gravity="right|center_vertical" 
        android:text="@string/info_lineG" /> 

       <TextView 
        android:id="@+id/info_lineG" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="0.5" 
        android:background="@android:color/transparent" 
        android:gravity="left|center_vertical" /> 
    </LinearLayout> 
</LinearLayout> 

此組件的Java類是非常簡單的:

public class InfoPanel extends LinearLayout{ 
public InfoPanel(Context ctx) 
    { 
     super(ctx); 
     LayoutInflater.from(ctx).inflate(R.layout.info_panel, this); 
    } 

    public InfoPanel(Context ctx, AttributeSet attr) 
    { 
     super(ctx,attr); 
     LayoutInflater.from(ctx).inflate(R.layout.info_panel, this); 
    } 
    @Override 
    public void onFinishInflate() 
    { 
     super.onFinishInflate(); 
    } 
} 

主要XML在這裏我使用該組件似乎是:

<TableRow 
    android:id="@+id/tableRow2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <com.project.my.components.InfoPanel 
     android:id="@+id/InfoPanel" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
</TableRow> 

問題是,我的分量只有寬度大約是屏幕寬度的10%。現在我正在嘗試搜索一些相同的問題(我發現了很多話題,但沒有爲我工作)超過5小時..:/我想它的東西真的很小,很愚蠢,我失蹤了。感謝所有的想法。

+0

您使用tablelayout,那麼什麼是您的第一tablerow的 – Meenal

+0

表格佈局使用match_parent的寬度以及寬度和高度.. – piggy

+0

,是你的第一個錶行,在表格佈局CZ,第一tablr行的屬性由所有的行定義 – Meenal

回答

1

這很好,你找到你的問題的解決方案,錶行具有使用所有行中的第一行的屬性的默認行爲。但刪除它解決了你的問題,這是關鍵的事情。