2012-08-03 19 views
5

Görüntü ve iki metinle özel bir tercihim var ve görüntüyü programsal olarak değiştirmem gerekiyor.Özel tercih düzenini yönetme

Özel tercih görünümünü alıp, findViewById öğesini kullanarak düzen içinde ImageView'ı bulabiliyorum, ancak görüntüyü değiştirmeye çalışırsam bu işe yaramaz.

Yanlış mıyım?

TERCİH DÜZEN

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


    <ImageView 
     android:id="@+id/imageforfacebook" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:padding="5dip" 
     android:src="@drawable/icon" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+android:id/title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:fadingEdge="horizontal" 
      android:singleLine="true" 
      android:text="titolo" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:textSize="18sp" /> 

     <TextView 
      android:id="@+android:id/summary" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignLeft="@android:id/title" 
      android:layout_below="@android:id/title" 
      android:maxLines="2" 
      android:text="descrizione" 
      android:textAppearance="?android:attr/textAppearanceSmall" /> 
    </LinearLayout> 

</LinearLayout> 

KOD ImageView İÇERİK

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

View v = (View) prefs_facebookimage.getView(null, null); 
ImageView img = (ImageView) v.findViewById(R.id.imageforfacebook); 
Uri uri = Uri.parse(path); 
img.setImageURI(uri); 

cevap

0

DEĞİŞTİRMEK İÇİN Ne çekilebilir res/altındaki tüm görüntüleri koymak ve sonra R.drawable üzerinden erişmeye eğer. ? Bu yaklaşım benim için her zaman çalıştı. URI'yi kullanmanın zorlayıcı nedenleri yoksa, bu yaklaşım denemeye değer olabilir. URI kullanmanız gerekse bile, bu yaklaşımı test etmeyi ve çalışmayı öneririm. En azından, genel olarak uygulamanızın değil, 'yol' değerinin yanlış bir şey olduğunu biliyorsunuzdur.

+0

Resim, kamera veya SD karttan alınacağından ve kullanıcının istediği zaman değiştirebileceğinden çekilebilir çözümü kullanamıyorum. Kod tercihi yerine getirdi, ayrıca özel düzenimde bazı metinleri değiştirmeye çalıştım ve setText ("newText") adını verdikten sonra; Hata ayıklama sırasında TextView yeni metne sahip, ancak bir kez bitirdikten sonra orijinal olarak geri dönüyor. – Giuseppe

6

Ben rutin getView çalıştı ama benim için çalışmıyor, nihayet özel bir Preference ile içeri girdi: Burada

public class ImageViewPreference extends Preference { 
    private ImageView mImageView; 
    private Bitmap mPhoto; 

    public ImageViewPreference(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.setWidgetLayoutResource(R.layout.pref_account_image); 
     if (mPhoto == null) { 
      mPhoto = BitmapFactory.decodeResource(
        getContext().getResources(), R.drawable.icon); 
     } 
    } 

    @Override 
    protected void onBindView(View view) { 
     super.onBindView(view); 
     mImage = (ImageView) view.findViewById(R.id.pref_imageView); 
     mImage.setImageBitmap(mPhoto); 
    } 

    public void setImage(Intent imageData) { 
     mPhoto = data.getParcelableExtra("data"); 
    } 
} 

Ve Preference.xml geçerli:

Ve ImageView numaranızı onPreferenceClick geri arama yönteminde değiştirmek için mImagePref.setImage numaralı telefonu arayın.

Keşke yardımcı olur! İyi şanslar.

+0

'findViewById()' in hala onBindView() 'da çalışmadığını buldum. Bunun yerine, üzerinde çalıştığım onCreateView() 'da yaptım. – ryan

+0

@ryan bu garip. Bu konuya sahip değilim ve belgeler diyor ki 'Bu düzende Özel Görünümler referanslarını almak ve bunlara özellikler koymak için iyi bir yer '. http://developer.android.com/reference/android/preference/Preference.html#onBindView%28android.view.View%29 – Sufian

İlgili konular