1
目前,我正在使用Styles.xml与Java代码结合来定义PullToRefresh自定义。我只想通过Java代码来完成所有的定制,而不是用XML定义它们。我可以通过编程实现所有的自定义吗?ActionBar - PullToRefresh以编程方式实现而不使用样式
这里是我的XML定制:
<!-- PullToRefresh Customizations -->
<style name="Theme.Holo.CustomPtrHeader" parent="Theme.Sherlock">
<item name="ptrHeaderStyle">@style/Widget.Custom.PtrHeader</item>
</style>
<style name="Widget.Custom.PtrHeader" parent="android:Widget">
<!-- The background of the header view -->
<item name="ptrHeaderBackground">#FF69B4</item>
<!-- Color to tint the progress bar -->
<item name="ptrProgressBarColor">#FF69B4</item>
<!-- The strings to be displayed at the various states -->
<item name="ptrPullText">Pull To Refresh</item>
<item name="ptrRefreshingText">Refreshing News</item>
<item name="ptrReleaseText">Loading...</item>
</style>
Java代码:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ViewGroup viewGroup = (ViewGroup) view;
mPullToRefreshLayout = new PullToRefreshLayout(activity);
ActionBarPullToRefresh
.from(activity)
.insertLayoutInto(viewGroup)
.theseChildrenArePullable(R.id.gridview_news_grid,
android.R.id.empty).listener(this)
.setup(mPullToRefreshLayout);
}
@Override
public void onRefreshStarted(View view) {
if (Const.DEBUGGING)
Log.d(Const.DEBUG, "PullToRefresh Started");
gridview.setVisibility(View.INVISIBLE);
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
getDataFromServer();
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
mPullToRefreshLayout.setRefreshComplete();
if (getView() != null) {
gridview.setVisibility(View.VISIBLE);
}
}
}.execute();
}
我想我可以使用选项()这样做的,但不知道如何正确地做到这一点。有人可以帮我解决这个问题。