Изображение плавающего профиля Android вне фрагмента / действия в XML - PullRequest
0 голосов
/ 17 декабря 2018

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

enter image description here

Я использовал фрагмент диалога нижнего листа и создал необходимые xml-виджеты, но это не так.Как мне составить этот тип пользовательского интерфейса.

Вот моя реализация xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"

android:gravity="bottom"
android:background="@android:color/transparent">

<LinearLayout
    android:id="@+id/imageLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="bottom|center_horizontal"
    android:background="@android:color/transparent">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/infoCIV"
        android:layout_width="100dp"
        android:layout_height="100dp"
        tools:src="@drawable/ic_players"
        app:civ_border_color="@color/colorPrimary"
        app:civ_border_width="1dp"/>

</LinearLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/date_dialog_bkg"
    android:layout_below="@+id/imageLayout"
    android:layout_marginTop="1dp">

    <android.support.design.widget.TabLayout
        android:id="@+id/playerTabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="?android:attr/actionBarSize"
        app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"
        app:tabIndicatorHeight="3dp"
        app:tabIndicatorColor="@color/colorPrimary"
        app:tabTextColor="@color/text_color"
        app:tabSelectedTextColor="@color/colorPrimary"
        android:background="@drawable/tabs_underline_bkg"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/playerVP"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="100dp"
        android:layout_below="@+id/playerTabs"/>

</RelativeLayout>

</RelativeLayout>

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

Вот итоговый вывод этого xml и вклад от комментариев в отличие от желаемого результата выше: enter image description here

и откуда вызывается фрагмент вкод адаптера:

 viewholder.playerRootLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PlayerInfoFragment fragment = new PlayerInfoFragment();
            Bundle bundle = new Bundle();
            bundle.putString(PLAYER_KEY_IMAGE_URL, players.getImageURL());
            String fullName = players.getFirstName() + " " + players.getLastName();
            bundle.putString(PLAYER_KEY_NAME, fullName);
            bundle.putString(PLAYER_KEY_ADDRESS, players.getAddress());
            bundle.putString(PLAYER_KEY_STATE, players.getStatePlayer());
//                bundle.putString(KEY_, players.);
            fragment.setArguments(bundle);
            fragment.setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Material_Light_NoActionBar);
            fragment.show(((AppCompatActivity)context).getSupportFragmentManager(), "PlayerInfoFragment");
        }
    });

Фрагмент java-файла имеет только инициализацию объектов xml и фрагменты макета вкладки, добавленные с использованием findviewbyid() and viewpageradapter to add fragments

1 Ответ

0 голосов
/ 17 декабря 2018

Примите ответ: добавьте к своему стилю это:

<style name="CustomBottomSheetDialogTheme" parent="Theme.Design.Light.BottomSheetDialog">
    <item name="bottomSheetStyle">@style/CustomBottomSheetStyle</item>
</style>

<style name="CustomBottomSheetStyle" parent="Widget.Design.BottomSheet.Modal">
    <item name="android:background">@android:color/transparent</item>
</style>

и к своему классу Java CustomDialogFragment extends BottomSheetDialogFragment это:

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(BottomSheetDialogFragment.STYLE_NORMAL, R.style.CustomBottomSheetDialogTheme);
}
...