xml ファイルを使用する場合、layout_margin というオプションがあります (たとえば、 text view の場合は layout_margin ="1dp" ) が、プログラムで設定したいのですが、その方法がわかりません。
8 に答える
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)textview.getLayoutParams();
params.setMargins(20, 0, 0, 0);
textview.setLayoutParams(params);
StackOverflow に質問を追加する前に、Google に問い合わせてください。
TextView tv = (TextView)findViewById(R.id.my_text_view);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)tv.getLayoutParams();
params.setMargins(0, 0, 10, 0); //substitute parameters for left, top, right, bottom
tv.setLayoutParams(params);
あなたはこれによって行うことができます:
TextView text = (TextView) findViewById(R.id.text);
LinearLayout.LayoutParams params= new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(left, top, right, bottom);//pass int values for left,top,right,bottom
text.setLayoutParams(params);
TextView tv = (TextView) findViewById(R.id.tvId);
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
llp.setMargins(50, 0, 0, 0); // llp.setMargins(left, top, right, bottom);
tv.setLayoutParams(llp);
すべての LayoutParams にメソッド setMargins() があるわけではないことに注意してください。
RelativeLayout、LinearLayout などには独自の内部クラス LayoutParams があるため、setMargins を常に使用できるとは限りません。
setMargins()
でを使用できますLinearLayout.LayoutParams
。詳細については、この StackOverflow の質問の回答を参照してください。
TextView tv = (TextView)findViewById(R.id.item_title));
RelativeLayout.LayoutParams mRelativelp = (RelativeLayout.LayoutParams) tv
.getLayoutParams();
mRelativelp.setMargins(DptoPxConvertion(15), 0, DptoPxConvertion (15), 0);
tv.setLayoutParams(mRelativelp);
private int DptoPxConvertion(int dpValue)
{
return (int)((dpValue * mContext.getResources().getDisplayMetrics().density) + 0.5);
}
textview の getLayoutParams() は、 xml の textview の Parent に基づいて、対応する Params にキャストする必要があります。
<RelativeLayout>
<TextView
android:id="@+id/item_title">
</RelativeLayout>
TextView の親が RelativeLayout の場合は、上記の RelativeLayout.LayoutParams を意味します。親が LinearLayout の場合は、
LinearLayout.LayoutParams mLinearlp = (LinearLayout.LayoutParams) tv
.getLayoutParams();
異なるデバイスで同じ実際のサイズをレンダリングするには、上記で使用した DptoPxConversion() メソッドを使用します。setMargin(left,top,right,bottom) パラメータは、 dp ではなくピクセルで値を取ります。