Вопрос о многих фрагментах в одном действии был рассмотрен здесь раньше, но я не могу найти решение для моей проблемы с позиционированием.Несколько фрагментов в одном действии
Я хочу горизонтальную полосу прокрутки в верхней части экрана и под ней пользовательский 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>
Я думаю, вы должны добавлять фрагменты в xml, а также для получения дополнительной информации просто посмотрите пример vogella на конкретную главу –
Я изменил первоначально опубликованный код и поместил фрагменты в макете деятельности - как это было предложено кто-то в комментарии выше. идея состоит в том, чтобы иметь прокрутку в верхней части экрана, а оставшуюся часть экрана занимала списокFragment. Такая же проблема, как у меня, когда я пытался это сделать во время выполнения. Полоса прокрутки отображается в верхней части экрана, а затем фрагмент списка занимает весь экран и перезаписывает полосу прокрутки. Как вы позиционируете два фрагмента один над другим ??? – Glenn