java - Android:如何以编程方式为 fragment 设置边距?

标签 java android android-layout android-fragments

因此,我需要为 fragment 容器(它是 RelativeLayout 中的 FrameLayout)设置左边距,以便它按我需要的方式缩放。因此,我想在 java 中执行此操作(尽管其余与 View 相关的内容是在 xml 中完成的),但我不确定如何处理它。我应该为我的 fragment 创建一个新的通用类吗?还是应该在 Activity 课上做?如果是,是否必须在特定位置?

这是我的 Activity 课:

public class LoginActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    if (findViewById(R.id.fragment_container) != null) {
        if (savedInstanceState != null)
            return;


        AuthFragment firstFragment = new AuthFragment();
        firstFragment.setArguments(getIntent().getExtras());
     getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, firstFragment).commit();
    }

}

和 Activity 布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/app_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/navy">

    <com.kupol24.app.view.MyImageView
        android:id="@+id/image_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"/>

    <FrameLayout
        android:id="@+id/container_holder"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="@dimen/fragment_margin"
        android:layout_centerVertical="true">

        <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/fragment_container"
            android:layout_gravity="center"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

    </FrameLayout>
</RelativeLayout>

最佳答案

也许这会有用,尝试为 Framelayout(或 Relative)设置边距:

final FrameLayout frameLayout = (FrameLayout)findViewById(R.id.fragment_container);

FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) frameLayout.getLayoutParams();
//left, top, right, bottom
params.setMargins(10, 10, 10, 10);
frameLayout.setLayoutParams(params);

(已编辑) 我不知道要执行您的代码,但我会这样做:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    final FrameLayout frameLayout = (FrameLayout) findViewById(R.id.fragment_container);
    if ((frameLayout != null) && (savedInstanceState == null)) {
        final AuthFragment firstFragment = new AuthFragment();
        firstFragment.setArguments(getIntent().getExtras());
        getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, firstFragment).commit();
        FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) frameLayout.getLayoutParams();
        //left, top, right, bottom
        params.setMargins(10, 0, 0, 0); //setting margin left to 10px
        frameLayout.setLayoutParams(params);
    }
}

关于java - Android:如何以编程方式为 fragment 设置边距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38101533/

相关文章:

android - 如何将 AdMob 放置在屏幕顶部(上方)Android Actionbar?

java - 使用 hibernate 检索单行和单列

java - 将对象传递给 rcp View

java String hashcode缓存机制

android - 二进制 XML 文件第 1 行 : invalid drawable tag vector

java - 如何创建具有特定大小但仍具有硬件控制按钮的 ADT 虚拟机?

java - Viewpager 中的 fragment 仅在从旁边的 fragment 打开时刷新

android - Cardview 设置背景颜色

java - 获取 Object[] 信息到 ArrayList 并将其呈现在 ListView 布局上

java - 如何在不知道图像名称的情况下更改 Android 中按钮的背景图像?