0

Ich habe eine Android-Aktivität erstellt, die drei Tabs mit Tablayout und Pager-Adapter enthält. Jede Registerkarte hat ihre Java-Datei und (ihr Layout in res/Layout-Ordner).Layout Objekte Positionen Unterschied, wenn aufgeblasen

Die erste Berührung hat kein Problem, während das Problem in der zweiten und der dritten Registerkarte erscheint.

gibt es einen Unterschied zwischen dem Layout xml Design in Android Studio und wenn es auf dem Emulator oder realen Gerät aufgeblasen ist.

Die Objekte sind nicht richtig positioniert und horizontal und vertikal verschoben! Was verursacht das Problem?

Android Studio Pic: (Spinner in der richtigen Position ist)

enter image description here

Emulator PIC: (Spinner ist in falschen Positionen)

enter image description here

Tab 3-Plan-Entwurf Beispiel:

<RelativeLayout> 
    <ScrollView> 
     <RelativeLayout> 
     <TextView> 
     <TextView> 
     <Spinner> 
     <Spinner> 
     </RelativeLayout> 
    </ScrollView> 
</RelativeLayout> 

Es gibt so viele Textansichten und jeder hat einen Spinner davor. und das Problem erscheint in der Spinner Position, sie sind nach oben verschoben.

Tab 3 Java-Datei:

public class DCO_New_Report extends Fragment{ 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.dco_new_report, container, false); 
} 
} 

Hauptaktivität Java:

public class DCODatabase extends AppCompatActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_dcodatabase); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.DCODatabaseToolbar); 
    setSupportActionBar(toolbar); 
    assert toolbar != null; 
    toolbar.setLogo(R.drawable.dco1); 

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab); 
    assert tabLayout != null; 
    tabLayout.addTab(tabLayout.newTab().setText("General Reports")); 
    tabLayout.addTab(tabLayout.newTab().setText("Report Display")); 
    tabLayout.addTab(tabLayout.newTab().setText("New Report")); 

    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
    final PagerAdapter adapter = new PagerAdapter 
      (getSupportFragmentManager(), tabLayout.getTabCount()); 
    assert viewPager != null; 
    viewPager.setAdapter(adapter); 

    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewPager.setCurrentItem(tab.getPosition()); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 

} 


} 

Haupt XML Aktivität:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="esmviewer.myandroid.com.esmviewer.DCODatabase"> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/DCODatabaseToolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:background="?attr/colorPrimary" 
    android:elevation="6dp" 
    android:minHeight="?attr/actionBarSize" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 

<android.support.design.widget.TabLayout 
    android:id="@+id/tab" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/DCODatabaseToolbar" 
    android:background="?attr/colorPrimary" 
    android:elevation="6dp" 
    android:minHeight="?attr/actionBarSize" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@id/tab"/> 

</RelativeLayout> 

Pager Adapter Java File:

public class PagerAdapter extends FragmentStatePagerAdapter{ 
int mNumOfTabs; 

public PagerAdapter(FragmentManager fm, int mNumOfTabs) { 
    super(fm); 
    this.mNumOfTabs = mNumOfTabs; 
} 

@Override 
public Fragment getItem(int position) { 

    switch (position) { 
     case 0: 
      DCOGeneralReports tab1 = new DCOGeneralReports(); 
      return tab1; 
     case 1: 
      DCOReportDisplay tab2 = new DCOReportDisplay(); 
      return tab2; 
     case 2: 
      DCO_New_Report tab3 = new DCO_New_Report(); 
      return tab3; 
     default: 
      return null; 
    } 
} 

@Override 
public int getCount() { 
    return mNumOfTabs; 
} 
} 
+0

Wenn das einzige Problem in xml ist, schreiben Sie bitte nur diese Datei. Außerdem hilft das Posten von Bildern, die zeigen, was Sie wollen und welches Ergebnis Sie erhalten, um das Problem zu lösen. – Aradhna

+0

Ich habe die Bilder hinzugefügt, ich habe die XML-Dateien gepostet, da ich nicht sicher bin, ob sie eine Beziehung zu dem Problem haben oder nicht. –

+1

Der beste Weg wäre, einem LinearLayout mit horizontaler Ausrichtung ein Paar TextView und Spinner zuzuordnen. Verwenden Sie Gewichte, um jede Ansicht an der richtigen Stelle zu fixieren, und versuchen Sie es erneut. Es könnte funktionieren. – Aradhna

Antwort

1

Für jede Zeile einen LinearLayout mit orientation auf horizontal setzen.

Dann fügen Sie eine TextView und eine Spinner zu ihm mit geeigneten Gewichten und es sollte funktionieren.

Hope this hepls :)