Я ищу некоторую помощь в Android-студии с заменой представления родительского фрагмента на представление дочернего фрагмента при щелчке по представлению в родительском фрагменте. Заранее благодарю за помощь.
Прямо сейчас у меня есть родительский фрагмент, который представляет собой список чата, и дочерний фрагмент (экран чата), который отображается при нажатии на элемент экрана чата (т.е. кнопка). Список чатов выглядит следующим образом:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.myapplication.ChatListFragment">
<!-- Empty Container for Fragment to Live in -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ListView
android:id="@+id/chatListView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/moonstone">
</ListView>
</FrameLayout>
Я настроил onClickListener для chatListView следующим образом:
_chatListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String chatName = _chatListAdapter.getItem(i).getChatTitle();
openChatScreen(chatName);
}
});
И openChatScreenWindow () выглядит следующим образом:
private void openChatScreen(String chatName)
{
_fragmentManager = getChildFragmentManager();
Log.i(CHAT_LIST_TAG, "starting chat screen fragment");
FragmentTransaction fragmentTransaction = _fragmentManager.beginTransaction();
ChatScreenFragment chatScreenFragment = ChatScreenFragment.newInstance(chatName);
fragmentTransaction.add(R.id.fragment_container, chatScreenFragment);
fragmentTransaction.addToBackStack(GlobalConstants.OPEN_CHAT_WINDOW_FRAGMENT_STRING + chatName);
fragmentTransaction.commit();
}
Однако, когда я запускаю этот код, дочерний фрагмент затемняется, потому что как макет кадра (представление, в котором отображается фрагмент), так иДля chatListView их ширина и высота установлены на match_parent
(я выяснил это, проверив высоту и ширину списка чатов как 200dp, и я смог увидеть дочерний фрагмент за ним).
Есть липростой способ получить фрагмент для замены chatListView всякий раз, когда он загружается?
Например, есть ли способ изменить это представление:
На это:
... когда щелкается элемент списка чата (первый)?
Я думал об изменении видимости представления списка на невидимый иотображается в зависимости от того, загружен ли фрагмент, но это похоже на головную боль.
Пожалуйста, дайте мне знать, что вы думаете, спасибо!