Фон
Я заметил проблему (ссылка здесь<) /a>) при добавлении представления заголовка внутри ListView, если ListView находится внутри SwipeRefreshLayout.
Эта проблема
Проблема в том, что если вид заголовка частично виден и вы прокручиваете вверх, вы увидите круговой вид SwipeRefreshLayout.
Вы можете проверить ссылку выше, чтобы посмотреть видео о том, о чем я говорю.
Образец кода
Вот как воспроизвести эту проблему (вы можете проверить ссылку выше, если вы не хотите копировать и вставлять):
MainActivity.java
public class MainActivity extends ActionBarActivity
{
@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView listView=(ListView)findViewById(android.R.id.list);
final TextView tv=new TextView(this);
tv.setText("a very large header view");
tv.setTextSize(70);
listView.addHeaderView(tv);
final SwipeRefreshLayout swipeRefreshLayout=(SwipeRefreshLayout)findViewById(R.id.swipeToRefreshLayout);
swipeRefreshLayout.setOnRefreshListener(new OnRefreshListener()
{
@Override
public void onRefresh()
{
new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
swipeRefreshLayout.setRefreshing(false);
}
},1000);
}
});
final ArrayList<String> arrayList=new ArrayList<String>();
for(int i=0;i<1000;++i)
arrayList.add(Integer.toString(i));
listView.setAdapter(new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,arrayList));
}
}
res/layout/activity_main.xml
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipeToRefreshLayout"
android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent" >
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:cacheColorHint="@android:color/transparent"
android:fastScrollEnabled="true"
android:footerDividersEnabled="true"
android:headerDividersEnabled="true"
android:paddingEnd="4dp"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:paddingStart="4dp"
android:scrollingCache="false"
android:smoothScrollbar="false"
android:textFilterEnabled="true"/>
</android.support.v4.widget.SwipeRefreshLayout>
Вопрос
Есть ли способ решить эту проблему?
Я думаю, что я мог бы использовать несколько типов для listView , но может быть есть другое решение, более элегантное, простое или лучше каким-либо другим образом?