0

tablayoutとpagerアダプタを使用して3つのタブを含むアンドロイドアクティビティを作成しました。すべてのタブにはJavaファイルと(res/Layoutフォルダ内のレイアウト)があります。レイアウトオブジェクトの膨張時の位置の差

2番目と3番目のタブに問題が表示されている間、最初のタップは問題ありません。

アンドロイドスタジオのレイアウトxmlデザインと、エミュレータや実​​際のデバイスで膨らんだデザインとの間に違いがあります。

オブジェクトは正しい位置になく、水平方向と垂直方向に移動します。これを引き起こしている問題は何ですか?

のAndroidメーカーピック:

enter image description here

エミュレータPIC(スピナーが正しい位置にある):

enter image description here

タブ3のレイアウト設計例(スピナーが正しくない位置にあります):

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

非常に多くのテキストビューがあり、誰もがその前にスピナーを持っています。問題はスピナーの位置に現れますが、それらは上に移動します。

タブ3 Javaファイル:

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

主な活動の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) { 

     } 
    }); 

} 


} 

主な活動XML:

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

ページャアダプタのJavaファイル:

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

唯一の問題がxmlにある場合は、そのファイルのみを投稿してください。あなたが望むものとあなたが得た結果を描写したプラスの写真を掲示することで、問題を解決するのに役立ちます。 – Aradhna

+0

写真を追加しましたが、問題と関連があるかどうかわからないので、XMLファイルを投稿しました。 –

+1

最も良い方法は、TextViewとSpinnerのペアを水平方向のLinearLayoutに割り当てることです。ウェイトを使用して、各ビューを適切な場所に固定してから、もう一度やり直してください。それはうまくいくかもしれない。 – Aradhna

答えて

1

orientationに設定してhorizontalに設定します。

次に、TextViewSpinnerを適切な重量で加えてください。これはうまくいくはずです。

ホープス:

関連する問題