我有以下问题。这是我的布局的一个小草图(只有相关的部分):
<HorizontalScrollView
android:id="@+id/horizontalScrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none"
>
<LinearLayout
android:id="@+id/horizontalLayoutContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
</LinearLayout>
</HorizontalScrollView>
现在我在horizontalLayoutContainer ID布局中添加了四个按钮。我希望能够禁用容器内的按钮,但粗略的我不是:(( 如何获得与已添加的按钮相关的视图? (我不能在按钮上使用generateID,因为它可以从API 17获得。)
我还尝试手动设置ID,从0开始,结果是我能够捕获ID = 0而不是其他ID :(( 请帮忙
由于
编辑: ViewGroup mLayout =(ViewGroup)((FragmentActivity)mContext).findViewById(rootLayoutID);
if(mLayout!=null){
for(int i = 0; i < mLayout.getChildCount(); i++)
{
View view = mLayout.getChildAt(i);
if(!(view instanceof Button))
setViewsEnabled(mContext, view.getId(), enable);
else{
Log.debug(tag, "I'm a button with ID: "+ view.getId());
view.setEnabled(enable);
view.setClickable(enable);
}
view.setEnabled(enable);
}
mLayout.setEnabled(enable);
}
}
使用这部分代码,除了按钮之外,我可以禁用布局中的所有内容。正如您所看到的,我还创建了一个打印4次的日志(正好是按钮的编号),但ID = 0;
已解决:我找到了一个解决方案,通过编程方式(从0开始递增)ID,然后如下所示制作if / else,以便识别定义按钮的正确活动:
/*
* Se l'istanza e' MainActivity disabilito/abilito manualmente i bottoni
*/
if(mContext.getClass() == MainActivity.class){
ViewGroup horizontalScrollViewViewGroup = (ViewGroup)
((FragmentActivity) mContext).findViewById(R.id.horizontalLayoutContainer);
if(horizontalScrollViewViewGroup!=null){
Log.debug(tag, "Buttons Number: "+horizontalScrollViewViewGroup.getChildCount());
for(int i = 0; i < horizontalScrollViewViewGroup.getChildCount(); i++){
View view = ((FragmentActivity) mContext).findViewById(i);
if(view!=null){
view.setClickable(enable);
view.setEnabled(enable);
}
}
}
}
答案 0 :(得分:0)
每当您创建动态视图时,您都可以将该ID指定为
final int ID=1001;
Button btn=new Button (this);
btn.setId(ID);
并使用
获取视图findviewbyid(ID) ;
答案 1 :(得分:0)
View.findViewWithTag可以提供帮助,但是......等等,你通过addView(View)添加它们,所以你已经引用了它们