2013-10-03 4 views
2

Вопрос о многих фрагментах в одном действии был рассмотрен здесь раньше, но я не могу найти решение для моей проблемы с позиционированием.Несколько фрагментов в одном действии

Я хочу горизонтальную полосу прокрутки в верхней части экрана и под ней пользовательский ListFragment. Код, который я публикую ниже, помещает полосу прокрутки, а затем ListFragment перезаписывает ее. Когда я пытаюсь изменить хостинг FrameLayout, чтобы иметь два FrameLayouts, я получаю ошибки времени выполнения.

Просто, как я могу поместить списокFragment под полосой прокрутки?

public class GoogleNewsMainActivity extends FragmentActivity{ 

public static Context c; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    c=this; 

    setContentView(R.layout.activity_fragment); 


    /* FragmentManager fm = getSupportFragmentManager(); 
    Fragment fragment = fm.findFragmentById(R.id.fragmentContainer); 

    if (fragment == null) { 
     Scroll_Menu_Fragment scrollFragment = new Scroll_Menu_Fragment(); 
     fm.beginTransaction() 
      .add(R.id.fragmentContainer, scrollFragment) 
      .commit(); 

     GoogleNewsMainFragment f = new GoogleNewsMainFragment(); 
     fm.beginTransaction() 
      .add(R.id.fragmentContainer, f) 
      .commit(); 

    } */ 
} 
} 

Вот фрагмент полосы прокрутки:

public class Scroll_Menu_Fragment extends Fragment { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    return inflater.inflate(R.layout.scrollbar_fragment, container, false); 
} 

@Override 
public void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
} 

} 

Это ListFragment

public class GoogleNewsMainFragment extends ListFragment implements LoaderCallbacks<Cursor> { 

private static final String COLUMN_ID = "id"; 
public final static String NEWSFROMSERVICE = "NEWSFROMSERVICE"; 



static ImageView thumbnail; 
static String mSectionSelected; 
private NewsCursor mCursor; 
private ListView lv; 

private NewsCursorAdapter adapter; 


public static final String ID = "id"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setRetainInstance(true); 

    setHasOptionsMenu(true); 

    mSectionSelected = ""; // until they select one 



    getLoaderManager().initLoader(0, null, this); 




} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 



    View v = inflater.inflate(R.layout.fragment_google_news_main, container, false); 

    getActivity().setTitle(R.string.news_list_title); 

    return v; 
} 

И, наконец, хостинг макет

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/fragmentContainer" 
    android:baselineAligned="false" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <fragment 
    android:id="@+id/scrollFragment" 
    android:layout_width="fill_parent" 
    android:layout_weight="10" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="10dp" 
    class="com.gilchrist.android.googlenews.Scroll_Menu_Fragment" ></fragment> 

    <fragment 
    android:id="@+id/listFragment" 
    android:layout_width="fill_parent" 
    android:layout_weight="90" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="10dp" 
    class="com.gilchrist.android.googlenews.GoogleNewsMainFragment" ></fragment> 
    </LinearLayout> 
+0

Я думаю, вы должны добавлять фрагменты в xml, а также для получения дополнительной информации просто посмотрите пример vogella на конкретную главу –

+0

Я изменил первоначально опубликованный код и поместил фрагменты в макете деятельности - как это было предложено кто-то в комментарии выше. идея состоит в том, чтобы иметь прокрутку в верхней части экрана, а оставшуюся часть экрана занимала списокFragment. Такая же проблема, как у меня, когда я пытался это сделать во время выполнения. Полоса прокрутки отображается в верхней части экрана, а затем фрагмент списка занимает весь экран и перезаписывает полосу прокрутки. Как вы позиционируете два фрагмента один над другим ??? – Glenn

ответ

1

Я только что обновил макет деятельности , Проблема была вызвана значениями веса, которые я использовал. Подойдя к 90 и 10, я получил именно то, что хотел. Весь вышеприведенный код работает.

Смежные вопросы