Android - проблема с детьми RelativeLayout с GONE видимостью - PullRequest
0 голосов
/ 25 августа 2011

Вот пример кода:

    public class CustomImageVIew extends LinearLayout  {
        private Image mImage = null;
        private ImageView mImageView;
        private ProgressBar mProgressBar;
        private RelativeLayout mLayout;
        public static enum State {NOT_LOADED,   IMAGE_LOADING, IMAGE_LOADED};
        private State state;



        public CustomImageVIew(Context context) {
            this(context, null);
        }

        public CustomImageVIew(Context context, AttributeSet attrs) {
            super(context, attrs);

            View v = View.inflate(getContext(), R.layout.gallery_image_view, null);
            mLayout = (RelativeLayout) v;
            addView(mLayout);

            mImageView = (ImageView) mLayout.findViewById(R.id.gallery_image_view_image);
            mProgressBar = (ProgressBar) mLayout.findViewById(R.id.gallery_image_view_progress_bar);
            setState(State.NOT_LOADED);
        }

        private void setState(State newState) {
            if (state != newState) {
                state = newState;

                switch (state) {
                case NOT_LOADED:
                    mImageView.setVisibility(View.GONE);
                    mProgressBar.setVisibility(View.GONE);
                    break;
                case IMAGE_LOADING:
                    mImageView.setVisibility(View.VISIBLE);
                    mProgressBar.setVisibility(View.VISIBLE);
                    break;
                case IMAGE_LOADED:
                    mImageView.setVisibility(View.VISIBLE);
                    mProgressBar.setVisibility(View.GONE);
                    break;  
                }
            }
        }


        public State getState() {
            return state;
        }


    }





 <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">

        <ImageView
            android:id="@+id/gallery_image_view_image"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
        <ProgressBar 
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
             android:id="@+id/gallery_image_view_progress_bar" 
             android:layout_height="wrap_content" 
             android:layout_centerVertical="true" 
             android:layout_centerHorizontal="true"
             android:clickable="false"/>



    </RelativeLayout>

Когда я вызываю setState (State.IMAGE_LOADED) вне метода onCreate, ничего не происходит.Что это может быть за проблема?

1 Ответ

0 голосов
/ 25 августа 2011

Я думаю, что вам действительно не требуется пользовательский вид (файл Java).Вы можете сделать это, используя LinearLayout объявленный в xml и onCreate() метод вашей деятельности.XML делает вашу жизнь намного проще.При кодировании вы должны следовать рекомендациям Android.

...