Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 设置可见性不工作_Android_Android Layout_Visibility - Fatal编程技术网

Android 设置可见性不工作

Android 设置可见性不工作,android,android-layout,visibility,Android,Android Layout,Visibility,这是我的布局: 这是我的自定义视图 import java.util.Calendar; 公共类DayView扩展了LinearLayout{ 私人最终布尔值不到一个月; 私人最终文本视图编号视图; 私用内线长度m=0; 私人最终影像视图iv1、iv2、iv3、iv4、iv5、iv6、iv7、iv8、iv9、iv10、, iv11、iv12、iv13、iv14、iv15、iv16、iv17、iv18; 公共日视图(最终上下文、最终日历移动、, 最终日历(日历){ 超级(上下文); 查看。充气

这是我的布局:


这是我的自定义视图

import java.util.Calendar;
公共类DayView扩展了LinearLayout{
私人最终布尔值不到一个月;
私人最终文本视图编号视图;
私用内线长度m=0;
私人最终影像视图iv1、iv2、iv3、iv4、iv5、iv6、iv7、iv8、iv9、iv10、,
iv11、iv12、iv13、iv14、iv15、iv16、iv17、iv18;
公共日视图(最终上下文、最终日历移动、,
最终日历(日历){
超级(上下文);
查看。充气(上下文、右布局、日历、周、日、此);
iv1=(ImageView)findViewById(R.id.imageView1);
iv2=(ImageView)findViewById(R.id.imageView2);
iv3=(ImageView)findViewById(R.id.imageView3);
iv4=(ImageView)findViewById(R.id.imageView4);
iv5=(ImageView)findViewById(R.id.imageView5);
iv6=(ImageView)findViewById(R.id.imageView6);
iv7=(ImageView)findViewById(R.id.imageView7);
iv8=(ImageView)findViewById(R.id.imageView8);
iv9=(ImageView)findViewById(R.id.imageView9);
iv10=(ImageView)findViewById(R.id.imageView10);
iv11=(ImageView)findViewById(R.id.imageView11);
iv12=(ImageView)findViewById(R.id.imageView12);
iv13=(ImageView)findViewById(R.id.imageView13);
iv14=(ImageView)findViewById(R.id.imageView14);
iv15=(ImageView)findViewById(R.id.imageView15);
iv16=(ImageView)findViewById(R.id.imageView16);
iv17=(ImageView)findViewById(R.id.imageView17);
iv18=(ImageView)findViewById(R.id.imageView18);
最终图像视图[]视图=新图像视图[]{iv1,iv2,iv3,iv4,iv5,
iv6,iv7,iv8,iv9,iv10,iv11,iv12,iv13,iv14,iv15,iv16,
iv17,iv18};
用于(最终图像视图v:视图){
v、 设置可见性(视图不可见);
}
numberView=(TextView)findViewById(R.id.day\U编号);
numberView.setText(Integer.toString(moving.get(Calendar.DAY/u/u MONTH));
setTag(moving.clone());
belongsToMonth=(moving.get(Calendar.MONTH)=Calendar.current
.get(日历.月));
最终资源res=getResources();
如果(!少于一个月){
numberView.setTextColor(分辨率
.getColor(R.color.calendar\u unbelong\u dayview\u text));
挫折资源(R.drawable.Unbelong_dayview);
}否则{
numberView.setTextColor(分辨率
.getColor(R.color.calendar\u所属\u dayview\u文本);
setBackgroundResource((DateParseUtils.areEqualDays)(移动,
日历。今天)-R.drawable.selected_dayview
:R.可绘制。未选择(日视);
}
}
测量时的保护空隙(最终内部宽度测量),
公共布尔值belongsToMonth(){
公共日历getCalendar(){
公共void addRace(最终解析对象carrera){
最终图像视图[]视图=新图像视图[]{iv1,iv2,iv3,iv4,iv5,
iv6,iv7,iv8,iv9,iv10,iv11,iv12,iv13,iv14,iv15,iv16,
iv17,iv18};
if(沟道长度<视图长度){
最终图像视图iv=视图[racesNum];
最终内部id=getRaceId(carrera);
iv.setImageDrawable(getContext().getResources().getDrawable(id));
对于(int i=0;i如果(i您试图从后台设置
ImageView
的可见性
Async thread
。 您不能直接从后台线程访问视图

您可以使用
处理程序
,并在下一个方法中更新视图的可见性

public void handleMessage(Message msg) {
    super.handleMessage(msg);
    // update views here
}
或者,您可以直接在代码中使用下一个示例代码:

    imageView.post(new Runnable() {
        @Override
        public void run() {
            imageView.setVisibility(View.VISIBLE));
        }
    });
好的,解决了

我的
DayView
是在
ArrayAdapter
上动态创建的。我所要做的就是在
ArrayAdapter
getView
方法中执行所有视图操作,然后调用
adapter.notifyDataSetChanged()
,而不是试图直接修改它们


此外,我必须使用ViewHolder模式才能正确地进行修改。

在以下情况下,最后一种方法总是对我有效

.setVisibility(VISIBLE/INVISIBLE/GONE) ;
未能将我的布局添加到或从附加到的视图组中删除。将其发布到视图线程,它将完成以下工作:

m_viewIsVisible=/false/true; //set before hand

public void run()
{    
    try
    {
       if (!m_viewIsVisible)
           RootView.rootGroop().removeView(currentLayout);
       else
           RootView.rootGroop().addView(currentLayout);

    } catch (Exception ex)
    {
        Log.e(TAG, "-Add/Remove layout throws exception:: " + ex.toString());
    }
}
这里currentLayout是您想要显示/隐藏的顽固布局。RootView.rootGroop()获取currentLayout所属的视图组。
您应该应用自己的逻辑来保存和获取对父视图组的引用。

在设置可见性获取调用时,您在后台遇到任何问题吗?没有。我只是在后台调用服务器,然后在响应时设置视图的可见性。调用完成得很好,唯一令人尴尬的是视图没有更改其可见性不,我在AsyncTask的onPostExecute方法中从主线程执行,调试器实际上说我在主线程上。我在主线程上,测试完成后我会发布结果;-)下班后需要在我的计算机上找时间测试代码