0

У меня есть ActionBarActivity, который содержит HorizontalScrollView, чтобы показать вкладки и фрагменты под каждым.
В настоящее время загружен фрагмент под каждой вкладке есть PreferenceFragment, но я хочу, чтобы карта (как часть cardView и эту карту, чтобы содержать мой PreferenceFragment.
Я знаю, что можно поставить PreferenceFragment в контейнере внутри Activity зрения , но можно поместить его в контейнер Fragment?Как просмотреть предпочтениеФрагмент как карта (cardView)

ответ

0

Решение будет состоять в реализации ListView внутри вида карты.

Вот макет карты:

<android.support.v7.widget.CardView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_margin="8dp" 
    card_view:cardBackgroundColor="@android:color/white" 
    card_view:cardCornerRadius="8dp"> 

    <ListView 
     android:id="@android:id/list" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:orientation="vertical" /> 

</android.support.v7.widget.CardView> 

Обратите внимание на ListView с содержащейся @android:id/list, который что preferenceFragment требует, чтобы быть завышены.

0

макет, надуть для фрагмента может быть завернуты в cardview.

фрагмент

public View onCreateView(...) { 
    // Inflate the layout for this fragment 
    View rootView = inflater.inflate(R.layout.news_card_row, container, false); 
    return rootView; 
} 

XML

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/fssr_card" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

    </LinearLayout> 
</android.support.v7.widget.CardView> 
+0

сбой, если я удаляю 'addPreferencesFromResource (preferenceFrag);' Я вижу, что карта отлично - ошибка: 'Content имеет представление с атрибутом id 'android.R.id.list', который не является классом ListView' – SagiLow

+0

Can вы отправляете xml? – gllowmas

+0

уверен, какой макет?, Хотя ошибка довольно проста, макет содержит 'list', который не является' ListView', что верно, 'preferenceFragment' действительно содержит список. – SagiLow

-2

Лучший метод, который я нашел в том, чтобы использовать вложенные фрагменты с AppCompat-х getChildFragmentManager().

Мой код, который работает для Размах View я сделал с моими картами, и я думаю, что будет работать для вас:

PrefsFragment.java:

public class PrefsFragment extends PreferenceFragment { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Load the preferences from an XML resource 
    addPreferencesFromResource(R.xml.settings); 

} 

PrefsContainerFragment.java:

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentTransaction; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class PrefsContainerFragment extends Fragment { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Fragment prefsFragment = new PrefsFragment(); 
    FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); 
    transaction.add(R.id.child_fragment, prefsFragment).commit(); 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    return inflater.inflate(R.layout.fragment_pref, container,false); 
} 


} 

fragment_pref XML

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView 
xmlns:card_view="http://schemas.android.com/apk/res-auto" 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
card_view:cardCornerRadius="4dp" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:gravity="center_horizontal" 
android:orientation="vertical" 
card_view:cardBackgroundColor="@color/cardview_light_background" 
android:layout_margin="@dimen/card_padding" 
tools:context=".PrefFragment" 
android:clickable="false"> 

<FrameLayout 
    android:id="@+id/child_fragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

</android.support.v7.widget.CardView> 

Может возникнуть проблема с FragmentTransaction в методе onCreate, но, насколько я могу судить, это работает, потому что вы используете addPreferencesFromResource(R.xml.settings); в onCreate дочернего фрагмента. Однако, если это не сработает для вас, попробуйте поместить его в onCreateView или onActivityCreated.