Android: so stellen Sie die Marge für ein fragment programmgesteuert?

So, ich brauche die Einrichtung linken Rand für ein fragment-container (das ist ein FrameLayout innen ein RelativeLayout), so dass es skaliert die Art, wie ich es brauche. So, ich möchte das in java (obwohl der rest der view-bezogene Sachen erfolgt in xml), aber ich bin mir nicht sicher, wie Sie dabei Vorgehen. Sollte ich eine neue generalisierte Klasse für meine Fragmente? Oder sollte ich es in der activity-Klasse? Wenn dem so ist, muss es in einem bestimmten Ort?

Hier ist meine activity-Klasse:

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

}

Und Aktivität layout:

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



One Reply
  1. 4

    Vielleicht wird dies nützlich sein, versuchen Sie, die Ränder des Framelayout (oder Relativen):

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

    (Bearbeitet)
    Ich weiß nicht, dass Ihr code, aber würde ich so tun:

    @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);
        }
    }
    • Wo soll ich diesen code einfügen???
    • Antwort bearbeitet.
    • perfekt gearbeitet!! Danke 🙂 ps. ich habe dafür gestimmt, Sie zu beantworten, aber mein Ruf zu niedrig ist, das zu tun, sorry 😀

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.