1

Я попытался создать нижний табуст + фрагмент.Содержимое вкладки не изменяется, когда я нажимаю на tabhost

Проблемы есть,

1) при нажатии на кнопке вкладки, она не переключается на другой фрагмент, хотя мой журнал показывает, что он вступил в создании вида. Я устал помещать текстовое представление на каждый фрагмент, но ни один из них не отображается, поэтому я подозреваю, что фрагмент не добавлен в идентификатор framelayout: realtabcontent?

2) Нижняя вкладка хост кажется «слишком Дно», так что некоторые из нижней части вкладки «s находятся вне экрана

Как исправить проблемы? Спасибо за помощь

Главная активность

public class MainActivity extends FragmentActivity { 
    public FragmentTabHost tabHost; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     tabHost = (FragmentTabHost) findViewById(R.id.tabhost); 
     tabHost.setup(this, getSupportFragmentManager(), R.id.tabcontent); 
     tabHost.addTab(
       setIndicator(this, tabHost.newTabSpec("About"), 
         R.drawable.ic_launcher), About.class, null); 
     tabHost.addTab(
       setIndicator(this, tabHost.newTabSpec("Camera"), 
         R.drawable.ic_launcher), CameraHandle.class, null); 
     tabHost.addTab(
       setIndicator(this, tabHost.newTabSpec("Gallery"), 
         R.drawable.ic_launcher), PhotoGallery.class, null); 
     tabHost.addTab(
       setIndicator(this, tabHost.newTabSpec("LeaderBoard"), 
         R.drawable.ic_launcher), LeaderBoard.class, null); 
    } 

    public TabSpec setIndicator(Context ctx, TabSpec spec, int resId) { 
     // TODO Auto-generated method stub 
     View v = LayoutInflater.from(ctx).inflate(R.layout.custom_tab, null); 
     ImageView logo = (ImageView) v.findViewById(R.id.tab_logo); 
     logo.setImageResource(resId); 
     TextView text = (TextView) v.findViewById(R.id.tab_title); 
     text.setText(spec.getTag()); 
     return spec.setIndicator(v); 
    } 

} 

XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <FrameLayout 
     android:id="@+id/realtabcontent" 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" /> 

    <android.support.v4.app.FragmentTabHost 
     android:id="@+id/tabhost" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <FrameLayout 
      android:id="@+id/tabcontent" 
      android:layout_width="0dp" 
      android:layout_height="0dp" 
      android:layout_weight="0" /> 
    </android.support.v4.app.FragmentTabHost> 

</LinearLayout> 

Фрагмент (для каждой вкладки один фрагмент)

public class About extends Fragment { 


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

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
    } 

} 

XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextVsssiew" /> 

</LinearLayout> 

ответ

1

У вас возникла проблема с вашей компоновкой основного вида деятельности - она ​​имела высоту 0px. Вы можете использовать hierarchyviewer от Android Tools, чтобы выяснить некоторые детали взглядов, которые показаны в вашем приложении - для получения более подробной информации см (http://developer.android.com/tools/debugging/debugging-ui.html)

попробуйте следующее и идти оттуда:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <android.support.v4.app.FragmentTabHost 
     android:id="@+id/tabhost" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0" 
     android:orientation="horizontal" /> 

    <FrameLayout 
     android:id="@+id/tabcontent" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 

</LinearLayout> 
+0

но язычок находятся в верхней части макета, но не в нижней части макета? – user782104

1

Вы должны попробовать like this для вашего макета, чтобы установить вкладки в нижней части экрана.

<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/tabhost" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:padding="5dp" > 

    <FrameLayout 
     android:id="@android:id/tabcontent" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:padding="5dp" /> 

    <TabWidget 
     android:id="@android:id/tabs" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="-4dp" 
     android:layout_weight="0" /> 
</LinearLayout>