2016-09-09 7 views
2

アンドロイドバージョン4.4.2の物理デバイスを使用して、ネイティブのアンドロイドプロジェクトを作成しています。私は、垂直線形レイアウト内のボタンを持って、私は0にプログラムの上と下の余白を設定したい。親ビュープログラムでマージンを設定すると動作しません

detailContainer.addView(buttonWithMessage); 

しかし、どんなに私がmessageParams.setMargins(10, 0, 10, 0);に入れどの値にボタンを追加する親ビューについて

情報

LinearLayout.LayoutParams detailParams = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT 
); 
LinearLayout detailContainer = new LinearLayout(this); 
detailContainer.setOrientation(LinearLayout.VERTICAL); 
detailContainer.setLayoutParams(detailParams); 

ボタン

LinearLayout.LayoutParams messageParams = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.MATCH_PARENT, 
       LinearLayout.LayoutParams.WRAP_CONTENT 
     ); 
     messageParams.setMargins(10, 0, 10, 0); 

    // Displays the message 
    Button buttonWithMessage= new Button(this); 
    buttonWithMessage.setText(post.getMessage()); 
    ... 
    buttonWithMessage.setLayoutParams(messageParams); 

、マージンは変わらない。マージンは、左右に少しずつを除いて全体の幅に広がり、上と下にはありませんので触れるように見えます。私は親ビューがすべて線形レイアウトなので、上記のすべての親ビューについて同じパラメータを設定しようとしましたが、それでも何もありません。

+0

を働いている私はドントあなたが新しいのparamsの設定を参照してください。あなたがそれらを変更した後のビュー –

+0

偶然、それを投稿しなかった、私がスキップしたいくつかの設定があった – CookieMonster

答えて

0

あなたはボタンの余白を設定するLayoutParamsを使用する必要があります:あなたはRelativeLayout.LayoutParamsやLinearLayout.LayoutParamsを使用する必要があります使用しているものをレイアウトによって

LayoutParams params = new LayoutParams(
    LayoutParams.WRAP_CONTENT,  
    LayoutParams.WRAP_CONTENT 
); 
params.setMargins(left, top, right, bottom); 
yourbutton.setLayoutParams(params); 

を。

+0

私は理解していないと思う、私の例は 'L inearLayout.LayoutParams'、もっと一般的にしなければならないと言っていますか? – CookieMonster

0

は、ボタンの間違ったLayoutParamsを使用して、この

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.activity_main); 


    LinearLayout.LayoutParams detailParams = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT 
    ); 
    LinearLayout detailContainer = new LinearLayout(this); 
    detailContainer.setOrientation(LinearLayout.VERTICAL); 
    detailContainer.setLayoutParams(detailParams); 

    detailContainer.setBackgroundColor(Color.BLACK); 
    LinearLayout.LayoutParams messageParams = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT 
    ); 
    messageParams.setMargins(400, 400, 400, 400); 

    // Displays the message 
    Button buttonWithMessage = new Button(this); 
    buttonWithMessage.setText("Hai"); 
    buttonWithMessage.setTransformationMethod(null); 
    // buttonWithMessage.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_START); 
    buttonWithMessage.setTextColor(Color.BLACK); 
    buttonWithMessage.setBackgroundColor(Color.RED); 

    buttonWithMessage.setLayoutParams(messageParams); 
    detailContainer.addView(buttonWithMessage); 
    setContentView(detailContainer); 
} 

}

+0

@CookieMonster:私はあなたのcmtをknowさせてください。 – DKV

+0

'setContentView(detailContainer);は現在のアクティビティに追加するだけですか?他のメソッドにもレイアウトを渡します。 – CookieMonster

+0

setContentView(detailContainer);アクティビティレイアウトを設定します。 – DKV

0

You'reような何かをしようと、これは

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.rel_test); 
    Button buttonWithMessage= new Button(this); 
    buttonWithMessage.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT)); 
    RelativeLayout.LayoutParams test = (RelativeLayout.LayoutParams) buttonWithMessage.getLayoutParams(); 
    test.setMargins(10, 0, 0, 0); 
    buttonWithMessage.setLayoutParams(test); 
    buttonWithMessage.setText("TEST"); 
    relativeLayout.addView(buttonWithMessage); 
+0

これは、私が 'LinearLayout detailContainer = new LinearLayout(this);'に追加するビューです。これまでの相対レイアウトは使用していません。 – CookieMonster

+0

重要な部分は、ボタンのrealativelayoutパラメータを作成することではない、任意のレイアウトにボタンを追加することができます –

関連する問題