2014-07-16 46 views
2

簡單子:我想膨脹母與子1具有0dp寬度。充氣與0dp佈局寬度和重量(編程)

XML父:

<com.example.KeyPad  // extend LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="4"  // for the children 
    android:layout_weight="1" // this is for its parent 
    android:clickable="true" 
    android:background="@color/MidnightBlue" > 

的子類:

public class KeyButton extends RelativeLayout implements View.OnClickListener{  
    public KeyButton(Context c) { 
     super(c); 
     RelativeLayout v = (RelativeLayout) LayoutInflater.from(c).inflate(R.layout.key_button, this, true);  
     } 
    } 
} 

它使用R.layout.key_button XML:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:background="@android:color/holo_red_dark" 
    android:layout_height="wrap_content"> 

    <TextView ... /> 

</RelativeLayout> 

而且孩子得到通過補充說:

Parent.addView(new KeyButton(context)); 

問題是android:layout_weight看起來沒有采取行動,並且小孩的layout_width停留在「0dp」處。如果我將寬度更改爲50dp,則可以看到正確膨脹的孩子。

還試圖以編程方式添加參數獲取添加時:

KeyButton bt = new KeyButton(context); 
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT,1.0f); 
bt.setLayoutParams(lp); 
Parent.addView(bt); 

我如何用充氣0dp /重量的孩子?當然,你可以看到我已經定義了父級的weight_sum。

+0

更多信息,你有沒有嘗試刪除'weight_sum'?我不確定,但是讓系統在這裏處理可能會更好。 – codeMagic

+0

@codeMagic剛剛嘗試過。沒有工作(它膨脹但保持「不可見」= 0dp)。 – Diolor

回答

0

已經使用了LinearLayout.LayoutParams但你的按鈕父是RelativeLayout

試試這個:

KeyButton bt = new KeyButton(context); 
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(0, RelativeLayout.LayoutParams.WRAP_CONTENT,1.0f); 
Parent.addView(bt, lp); 
+0

其實我的父母是'LinearLayout'和按鈕'RelativeLayout'。 – Diolor

+0

好了,我的壞,你試圖使用功能'addView(BT,LP)'加'LinearLayout.LayoutParams'? – AlonsoFloo

+0

剛剛嘗試過,不幸的是似乎沒有工作。順便說一句小費以上:沒有構造'RelativeLayout.LayoutParams(INT,整數,浮點)'因爲RelativeLayout的不接受weight_sum屬性。 – Diolor

-1

你可以簡單的設置可見性屬性消失或通過下面的代碼隱藏:

bt.setVisibility(View.GONE); 

您可以找到有關設置意見here

+1

這完全不相干 – Diolor