【问题标题】:Set layout margin for element in relativeLayout by code通过代码设置relativeLayout中元素的布局边距
【发布时间】:2013-06-24 10:55:27
【问题描述】:

我有 RelativeLayoutactivity.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>

这里是 Activity 的代码:-

    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 中获取元素和设置边距。你能帮帮我吗?

【问题讨论】:

    标签: android margin android-relativelayout


    【解决方案1】:

    试试这个方法。

    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);
    

    希望对你有帮助。

    【讨论】:

    • headView 和 head_params 在哪里?
    【解决方案2】:

    试试这个代码....

    <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");
                }
        }
    }
    

    【讨论】:

      【解决方案3】:

      要在 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。

      【讨论】:

        【解决方案4】:

        这可能对你有帮助

        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 也动态添加到相对

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-14
          • 1970-01-01
          • 2013-05-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-11
          • 2012-02-24
          相关资源
          最近更新 更多