android - 如何通过代码设置TextView的Margin参数?
ringa_lee
ringa_lee 2017-04-17 14:55:10
0
3
626

通过文档,查到TextView下有这么个方法

setLayoutParams(ViewGroup.LayoutParams params)

但是ViewGroup.LayoutParams这个东西,并没有setMargins方法,LinearLayout.LayoutParams才有,请教下该如何写?

ringa_lee
ringa_lee

ringa_lee

全部回覆(3)
黄舟

手冊上這樣講public void setLayoutParams (ViewGroup.LayoutParams params), 『該方法提供一些參數給父視圖,指定了該view在父視圖中的位置(或者說佈局)。 ’

Set the layout parameters associated with this view. These supply parameters to the parent of this view specifying how it should be arranged.

如果需要動態改變TextView(或者其它View)的margin屬性(android:layout_marginTop, android:layout_marginBottom, android:layout_marginLeft, android:layout_marginRight),最好是透過程式碼動態來加入這個View,而不是在layout中定義該View。

如果父視圖是LinearLayout,那麼就可以直接呼叫textView.setLayoutParams(params),然後在加入textView到LinearLayout:

LinearLayout layout = (LinearLayout) findViewById(R.id.layoutView);

int left, top, right, bottom;
left = top = right = bottom = 64;
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(left, top, right, bottom);

TextView textView = new TextView(this);
textView.setText("A Label");
textView.setLayoutParams(params);        

layout.addView(textView);

如果父視圖是RelativeLayoutFrameLayout,上面的做法無效,解決的辦法是新建一個LinearLayout,然後把textView加給它,再把這個LinearLayout加入給父視圖:

FrameLayout layout = (FrameLayout) findViewById(R.id.layoutView);

int left, top, right, bottom;
left = top = right = bottom = 64;
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(left, top, right, bottom);

TextView textView = new TextView(this);
textView.setText("A Label");
textView.setLayoutParams(params);        

LinearLayout ll = new LinearLayout(this); // + 增加行
ll.setOrientation(LinearLayout.VERTICAL); // + 增加行
ll.addView(textView); // + 增加行
   
// layout.addView(textView); // - 删除行
layout.addView(ll); // + 增加行 

以上程式碼經過測試。

阿神

ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();

所有可以配置MarginViewGroupLayoutParams基本上都來自MarginLayoutParams,這是一個LayoutParams的子類,你在通過getLayoutParams()的時候強制轉換成ViewGroup.MarginLayoutParams即可

黄舟

重新設定它的Layoutparams就行了

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板