Intereting Posts

Фрагмент над другим фрагментом

Когда я показываю один фрагмент (который является полноэкранным с #77000000 фоном) над другим фрагментом (назовем его основным), мой основной фрагмент по-прежнему реагирует на клики (мы можем нажать кнопку, даже если мы ее не видим).

Вопрос : как предотвратить щелчки на первом (основном) фрагменте?

РЕДАКТИРОВАТЬ

К сожалению, я не могу просто скрыть основной фрагмент, потому что я использую прозрачный фон во втором фрагменте (так что пользователь может видеть, что находится позади).

Solutions Collecting From Web of "Фрагмент над другим фрагментом"

Установите свойство clickable для представления второго фрагмента в true. Представление будет захватывать событие, чтобы оно не передавалось основному фрагменту. Поэтому, если представление второго фрагмента является макетом, это будет код:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> 

Решение довольно простое. В нашем втором фрагменте (который перекрывает наш основной фрагмент) нам просто нужно поймать событие onTouch :

 @Override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstance){ View root = somehowCreateView(); /*here is an implementation*/ root.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { return true; } }); return root; } 

Это звучит как случай для DialogFragment. Используйте старое колесо.

Что вы можете сделать, так это то, что вы можете дать Blank щелчок на макете предыдущего фрагмента, используя свойство onClick для родительского макета этого основного фрагмента, и в doNothing(View view) вы можете создать функцию doNothing(View view) и ничего не писать в ней. Это сделает это за вас.

Лучший способ – использовать FrameLayout, я использую его для фрагмента, поэтому нет необходимости объявлять фрагменты в другом Xml

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:background="@color/colorPrimary" tools:context="com.example.sumedh.fragmentpractice1.MainActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText" android:layout_gravity="center"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:id="@+id/BtnNext"/> </FrameLayout>