Android 以编程方式修改视图的页边距

Android 以编程方式修改视图的页边距,android,android-layout,android-fragments,android-view,Android,Android Layout,Android Fragments,Android View,我正在尝试修改视图的边距 如果我在onCreateView上为片段获取视图的边距(就在膨胀布局之后),我将获得xml上定义的值。如果将边距值更改为0,则会得到所需的结果 这是片段在进行任何更改之前的外观: 如果删除onCreateView上的边距,我会得到以下结果(这是我想要的): 我遇到的问题是,如果我获得同一视图的边距,但在调用onCreateView后,边距将显示为0,如果我尝试通过添加负边距来删除边距,我会得到以下结果(边距会变小): 这是我的search_bar_layout.x

我正在尝试修改视图的边距

如果我在onCreateView上为片段获取视图的边距(就在膨胀布局之后),我将获得xml上定义的值。如果将边距值更改为0,则会得到所需的结果

这是片段在进行任何更改之前的外观:

如果删除onCreateView上的边距,我会得到以下结果(这是我想要的):

我遇到的问题是,如果我获得同一视图的边距,但在调用onCreateView后,边距将显示为0,如果我尝试通过添加负边距来删除边距,我会得到以下结果(边距会变小):

这是我的search_bar_layout.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/searchBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_margin="8dp"
    android:padding="6dp"
    android:background="@drawable/rectangle"
    android:focusable="true"
    android:focusableInTouchMode="true">

    <!--Some elements -->

</LinearLayout>
这就是我在onCreateView之后运行的内容(不会删除边距,使条变小):


为什么会发生这种情况?调用onCreateView后如何修改页边距?

能否为这两个示例添加一些代码(即,您如何在onCreateView和更高版本上设置/检索页边距)?@user1845791您不使用XML设置页边距有什么原因吗?我希望在用户关注输入时更改页边距。
View v = inflater.inflate(R.layout.search_bar_layout, container, false);
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) v.getLayoutParams();
Log.d("MARGIN", String.valueOf(lp.leftMargin)); // is 24
lp.setMargins(0, 0, 0, 0);
view.setLayoutParams(lp);
LinearLayout ll = (LinearLayout)findViewById(R.id.searchBar);
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) ll.getLayoutParams();
Log.d("MARGIN", String.valueOf(lp.leftMargin)); // is 0
lp.setMargins(-24, -24, -24, -24); // Changing to negative value because current value is 0
view.setLayoutParams(lp);