按代码设置relativeLayout中元素的布局边距

时间:2013-06-27 04:42:40

标签: android margin relativelayout

我有RelativeLayout activity.xml的代码

    <RelativeLayout 
    android:layout_height="50dip"
    android:layout_width="fill_parent"
    android:id="@+id/relativeLayout"          
    android:background="#686868"  
>
    <Button
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_margin="5dip"
        android:layout_alignParentLeft="true"
        android:text="Back"
        android:textColor="#FFFFFF"
        android:id="@+id/btnBack"
    />
    <TextView 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:id="@+id/title_header"  
        android:text="Header of page"  
        android:layout_centerInParent="true"
        android:textColor="#FFFFFF"
    />
</RelativeLayout>

以下是活动代码: -

    public class MainActivity extends Activity {
        int valCheck;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);
                if(valCheck==0)
                {
                    //here set title again for backbutton is "backPreviousPage" and set  
                    //position again of title_header is right of backButton with 
                    //margin=5dip(not set position is centerInParent as code

                }


    }

}

我不知道通过代码在relativeLayout中获取元素和设置边距的方法。你能帮助我吗?

4 个答案:

答案 0 :(得分:0)

试试这种方式。

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)relativeLayout.getLayoutParams();
params.setMargins(80, 0, 0, 0); //left, top, right, bottom
params.height = 60; //set height dynamically
params.width = 200; // set width dynamically
relativeLayout.setLayoutParams(params);

我希望这会对你有所帮助。

答案 1 :(得分:0)

要在Android代码中访问UI元素,请使用findViewById方法。例如:

Button btnBack = (Button)findViewById(R.id.btnBack);

一旦您可以访问所需的所有元素,就可以使用API​​中提供的setter函数根据需要更改布局。由于大多数(如果不是全部)UI元素都是View类的子类,因此很可能会在那里定义您需要的方法。这是一个很好的参考: http://developer.android.com/reference/android/view/View.html

所有View对象都继承setLayoutParams方法。因此,您可以将Gunaseelan建议的方法应用于Button和TextView。

答案 2 :(得分:0)

这可能有助于你

RelativeLayout.LayoutParams params  = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);

    params.addRule(RelativeLayout.CENTER_IN_PARENT);
    params.addRule(RelativeLayout.RIGHT_OF, 1001);
    params.addRule(RelativeLayout.LEFT_OF, 1000);

此处,ID 1001和1000是我的EditText id,也是动态添加到相对

答案 3 :(得分:0)

试试这个代码......

<LinearLayout 
    android:layout_height="50dip"
    android:layout_width="fill_parent"
    android:id="@+id/linearLayout"          
    android:background="#686868"
    android:orientation="horizontal"  
>
<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_margin="5dip"
    android:layout_alignParentLeft="true"
    android:text="Back"
    android:textColor="#FFFFFF"
    android:id="@+id/btnBack"
/>
<TextView 
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:id="@+id/title_header"  
    android:text="Header of page"  
    android:layout_centerInParent="true"
    android:textColor="#FFFFFF"
/>
</LinearLayout>

和java代码......

public class MainActivity extends Activity {
    int valCheck;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);

    Button btn = (Button) findViewById(R.id.btnBack);
            if(valCheck==0)
            {
                //here set title again for backbutton is "backPreviousPage" and set  
                //position again of title_header is right of backButton with 
                //margin=5dip(not set position is centerInParent as code
                btn.setText("backPreviousPage");
            }
    }
}