我想添加进程条来搜索视图。但是searchPlate返回null。
public void showProgressBar(SearchView searchView, Activity context)
{
var id = searchView.Context.Resources.GetIdentifier("android:id/search_plate", null, null);
var searchPlate = searchView.FindViewById(id);
...
}
请帮帮我
更新
我在菜单中创建搜索视图
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/action_item_search"
android:title="Seach Item"
android:icon="@drawable/ic_search_black_24dp"
app:showAsAction="always|collapseActionView"
app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
答案 0 :(得分:0)
android:id / search_plate是指SearchView中的一些背景图片。您无法使用进度条替换它。 SearchView扩展了LinearLayout,因此可以使用SearchView完成可以使用LinearLayout完成的任何操作。但是,SearchView是一个特殊用途的View。我不建议修改其默认行为。所以我建议将ProgressBar添加到SearchView的右侧,并将ProgressBar置于不确定模式,这是一些旋转轮。
答案 1 :(得分:0)
我可以使用您的代码获取searchPlate:
public class MainActivity : Activity
{
SearchView sv;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
sv = FindViewById<SearchView>(Resource.Id.searchView1);
showProgressBar(sv, this);
}
void showProgressBar(SearchView searchView, Context context)
{
int id = searchView.Context.Resources.GetIdentifier("android:id/search_plate", null, null);
View searchPlate = searchView.FindViewById(id);
if (searchView.FindViewById(id).FindViewById(Resource.Id.progressBar1) != null)
{
searchView.FindViewById(id).FindViewById(Resource.Id.progressBar1).Animate().SetDuration(200).Alpha(1).Start();
}
else
{
View v = LayoutInflater.From(context).Inflate(Resource.Layout.loading, null);
((ViewGroup)searchView.FindViewById(id)).AddView(v, 1);
}
}
}
你可以参考我的项目并找出核心问题。