Подтвердить что ты не робот

Почему FrameLayout используется для фрагментов?

Где бы я ни выглядел, FrameLayout, как представляется, используется как FragmentContainer. Почему FrameLayout всегда видно с помощью Fragments?

4b9b3361

Ответ 1

В основном вы можете использовать RelativeLayout или LinearLayout, он все равно будет работать, но ответ на ваш вопрос находится в документации FrameLayout:

FrameLayout предназначен для блокировки области на экране для отображения один элемент. Как правило, FrameLayout следует использовать для child view, потому что может быть сложно организовать детские представления в способ, который масштабируется до разных размеров экрана без детей перекрывая друг друга. Однако вы можете добавить нескольких детей к FrameLayout и контролировать их положение в FrameLayout присваивая тяжести каждому ребенку, используя андроид: layout_gravity атрибут.

Подробнее о FrameLayout вы можете узнать здесь: Разработчики FrameLayout/Android

Ответ 2

Основная цель компоновки фреймов - блокировать область, необходимую для соответствия самому большому дочернему виду. Если вы используете макет кадра в качестве контейнера фрагментов, вы можете гарантировать, что у вас всегда есть место для размещения самого большого фрагмента.

В некоторых случаях вам может потребоваться иметь более 1 фрагмента на экране одновременно, в этом случае вам следует выбрать Relative или Linear Layout.

Ответ 3

Все зависит от требований пользователя и необходимости настройки.

Нет необходимости использовать FrameLayout вообще.

Например, в нижнем коде отсутствует макет, а сам фрагмент содержит только одно изображение.

public class MyFragment extends Fragment implements OnClickListener{

    String TAG="MyFragment";
    Context c;
    MyFragment(Context con){
    c=con;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
    }
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub

        ImageView v=new ImageView(c);
            //other imageview stuff

        return v;
    }
    @Overrides
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Log.i(TAG, "onClcik");

    }
}