7

Ich entwickle eine App, wo Sie BusStop Stundenpläne anzeigen können. Und Benutzer können mit der ActionBar PullToRefresh (Library) aktualisieren. Meine App hat auch eine transparente Statusleiste auf KitKat aktiviert.ActionBar - PullToRefresh

Jetzt wird das ActionBar Overlay, das normalerweise die Aktionsleiste überlappen sollte, jetzt nach oben verschoben.

Wie kann ich das lösen?

Mit freundlichen Grüßen!

+0

So können Sie uns schreiben einige Code? Und wenn möglich, ein Bild von dem, was vor sich geht, würde helfen – Leonardo

+1

Sie sollten Ihre Antwort für weitere Einzelheiten aktualisieren, was Sie versucht haben, dann kann jeder Ihnen helfen. – R4j

+0

Bereitstellung von Code wird helfen, eine Antwort zu erhalten. In der Zwischenzeit half mir dieses Tutorial (http://www.tutecentral.com/android-pull-to-refresh/), meins in Gang zu bringen, vielleicht kann es dir helfen. – CodeMonkey

Antwort

10

Ich habe ein benutzerdefiniertes Header-Layout für das Pull-to-Refresh-Layout erstellt. Ich habe nur das Original kopiert, die Höhe der Statusleiste, die normalerweise 25dp beträgt, hinzugefügt und einen 25dp top padding hinzugefügt.

<?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="73dp" 
    android:paddingTop="25dp" > 

    <FrameLayout 
     android:id="@id/ptr_content" 
     android:layout_width="match_parent" 
     android:layout_height="73dp" > 

     <TextView 
      android:id="@id/ptr_text" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 
    </FrameLayout> 

    <fr.castorflex.android.smoothprogressbar.SmoothProgressBar 
     android:id="@id/ptr_progress" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:minHeight="@dimen/ptr_progress_bar_stroke_width" /> 

</RelativeLayout> 

nun das Layout festgelegt, wenn Sie das Setup der Pull-Layout zu aktualisieren:

ActionBarPullToRefresh.from(getActivity()).listener(new OnRefreshListener() { 

    @Override 
    public void onRefreshStarted(View view) { 
     refresh(); 
    } 

}).headerLayout(R.layout.header).build()).setup(ptrLayout); 
+0

Vielen Dank :) – PatrickMA

+0

Konnten Sie das Kopfgeld vergeben, wenn es geholfen hat :) –

+1

Sicher :) Aber wie mache ich das? – PatrickMA

1

dies versuchen.

res/layout/activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.swipetorefresh.MainActivity" 
    tools:ignore="MergeRootFrame" /> 

res/layout/fragment_main.xml

<android.support.v4.widget.SwipeRefreshLayout   
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:ignore="MergeRootFrame" > 

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

</android.support.v4.widget.SwipeRefreshLayout> 

MainActivity.java

public class MainActivity extends Activity { 

    @Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

if (savedInstanceState == null) { 
    getFragmentManager().beginTransaction() 
      .add(R.id.container, new PlaceholderFragment()).commit(); 
} 
} 

    public static class PlaceholderFragment extends ListFragment implements OnRefreshListener { 

private SwipeRefreshLayout mSwipeRefreshLayout; 

private static final int LIST_ITEM_COUNT = 5; 
private int mOffset = 0; 

private ArrayAdapter<String> mListAdapter; 

public PlaceholderFragment() { 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_main, container, 
      false); 

    // Configure the swipe refresh layout 
    mSwipeRefreshLayout = (SwipeRefreshLayout) rootView.findViewById(R.id.container); 
    mSwipeRefreshLayout.setOnRefreshListener(this); 
    mSwipeRefreshLayout.setColorScheme(
      R.color.swipe_color_1, R.color.swipe_color_2, 
      R.color.swipe_color_3, R.color.swipe_color_4); 

    // Put the first batch of countries in the list 
    mListAdapter = new ArrayAdapter<String>(
      getActivity(), 
      android.R.layout.simple_list_item_1, 
      android.R.id.text1, 
      getCountries(mOffset)); 

    setListAdapter(mListAdapter); 

    return rootView; 
} 

private List<String> getCountries(int offset) { 
    ArrayList<String> countriesList = new ArrayList<String>(); 
    for(int i=0; i<LIST_ITEM_COUNT;i++){ 
     countriesList.add(COUNTRIES[offset+i]); 
    } 

    mOffset = offset + LIST_ITEM_COUNT; 
    return countriesList; 
} 

@Override 
public void onRefresh() { 
    // Start showing the refresh animation 
    mSwipeRefreshLayout.setRefreshing(true); 

    // Simulate a long running activity 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      updateCountries(); 
     } 
    }, 5000); 
} 



private void updateCountries() { 

    // Add the next batch of countries to the list 
    mListAdapter.addAll(getCountries(mOffset)); 

    // Signify that we are done refreshing 
    mSwipeRefreshLayout.setRefreshing(false); 
} 



private static final String[] COUNTRIES = {"Afghanistan", 
    "Albania", "Algeria", "American Samoa", "Andorra", "Angola", 
    "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina", 
    "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", 
    "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus", 
    "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", 
    "Bolivia", "Bosnia and Herzegovina", "Botswana", "Brazil", 
    "Brunei Darussalam", "Bulgaria", "Burkina Faso", "Burundi", 
    "Cambodia", "Cameroon", "Canada", "Cape Verde", "Cayman Islands", 
    "Central African Republic", "Chad", "Chile", "China", 
    "Christmas Island", "Cocos (Keeling) Islands", "Colombia", 
    "Comoros", "Democratic Republic of the Congo (Kinshasa)", 
    "Congo, Republic of(Brazzaville)", "Cook Islands", "Costa Rica", 
    "Ivory Coast", "Croatia", "Cuba", "Cyprus", "Czech Republic", 
    "Denmark", "Djibouti", "Dominica", "Dominican Republic", 
    "East Timor (Timor-Leste)", "Ecuador", "Egypt", 
    "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia"}; 

    } 
}