gpt4 book ai didi

android - ActionBar - PullToRefresh 在不使用样式的情况下以编程方式实现

转载 作者:行者123 更新时间:2023-11-29 14:27:36 24 4
gpt4 key购买 nike

目前我正在使用 Styles.xml 结合 java 代码来定义 PullToRefresh 定制。我只想通过 java 代码进行所有自定义,而不是在 XML 中定义它们。我能否以编程方式实现所有定制?

这是我的 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();
}

我想我可以使用 Options() 来执行此操作,但不确定如何正确执行。有人可以帮我解决这个问题。

最佳答案

好的..所以我确实仔细研究了一下,这就是我解决问题的方法。我们可以使用 DefaultHeaderTransformer 类完全控制“PullToRefresh”。我已经从 Styles.xml 中删除了“PullToRefresh”定制,并使用下面的代码来更改进度条的颜色并查看整个背景。您可以根据需要对其进行试验。如果您有任何问题,我可以回答。

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ViewGroup viewGroup = (ViewGroup) view;

mPullToRefreshLayout = new PullToRefreshLayout(activity);
ActionBarPullToRefresh
.from(activity)
.options(Options.create().scrollDistance(.75f).build())
.insertLayoutInto(viewGroup)
.theseChildrenArePullable(R.id.gridview_features_grid,
android.R.id.empty).listener(this)
.setup(mPullToRefreshLayout);

DefaultHeaderTransformer transformer = (DefaultHeaderTransformer) mPullToRefreshLayout
.getHeaderTransformer();
transformer.getHeaderView().findViewById(R.id.ptr_text)
.setBackgroundColor(getResources().getColor(R.color.blue));
transformer.setProgressBarColor(getResources().getColor(R.color.blue));
}

截图:

enter image description here

enter image description here

关于android - ActionBar - PullToRefresh 在不使用样式的情况下以编程方式实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22020914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com