Я пытаюсь добавить определенный Relative Layout xml программно. Он состоит из ImageView, EditText и TextView. Кажется, проблема заключается в том, что я пытаюсь сделать это по этому методу onActivityResult после возвращения из другого действия. Когда я делаю это где-то еще, он работает, и макет, который я хочу создать, отображается правильно (например, я успешно попробовал «onCreate» и нажатием кнопки), но если внутри «onActivityResult» не работает. Мне нужно, чтобы он был там.Относительная компоновка, добавленная программно, не будет отображаться
Отпечатки выводятся успешно в любом случае, нет ошибок или сбоев, но макет просто не отображается. Любые предложения приветствуются.
Это файл XML Я хочу создать:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="260dip">
<ImageView
android:id="@+id/damagePicture"
android:layout_width="match_parent"
android:layout_height="210dip"
android:scaleType="centerCrop"
android:layout_marginTop="10dip"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:src="@drawable/nocar"/>
<EditText
android:id="@+id/orderTextfield"
android:layout_height="40dip"
android:layout_width="match_parent"
android:gravity="left|center"
android:layout_marginLeft="10dip"
android:layout_marginRight="45dip"
android:hint="Enter damage description"
android:textSize="14sp"
android:layout_alignParentLeft="true"
android:textColor="@color/black"
android:textColorHint="@color/gray_vin_search_text"
android:background="@null"
android:singleLine="true"
android:editable="true"
android:layout_below="@+id/damagePicture"/>
<TextView
android:id="@+id/removePicture"
android:layout_width="40dip"
android:layout_height="40dip"
android:text="@string/discardPicture"
android:gravity="center|center"
android:textColor="@color/black"
android:textSize="24sp"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:clickable="true"
android:onClick="removePicture"/>
<View
android:id="@+id/bottomLine"
android:layout_width="match_parent"
android:layout_height="1dip"
android:layout_alignParentBottom="true"
android:background="@color/gray_for_line"></View>
</RelativeLayout>
здесь соответствующие части кода:
public void addResultingDamagePicture(String pathToFile) {
System.out.println("ADD RESULTING DAMAGE PICTURE");
LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(this.LAYOUT_INFLATER_SERVICE);
View damagePictureSet = layoutInflater.from(this).inflate(R.layout.damage_picture_set, picturesCell, false);
((TextView) damagePictureSet.findViewById(R.id.removePicture)).setTypeface(fontAwesome);
TextView remove = (TextView)damagePictureSet.findViewById(R.id.removePicture);
remove.setTypeface(fontAwesome);
File imgFile = new File(pathToFile);
if(imgFile.exists()) {
System.out.println("ADD RESULTING DAMAGE PICTURE - FILE OK");
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inSampleSize = 4;
final Bitmap thebmp = BitmapFactory.decodeFile(imgFile.getAbsolutePath(), opt);
((ImageView) damagePictureSet.findViewById(R.id.damagePicture)).setImageBitmap(thebmp);
picturesCell.addView(damagePictureSet);
} else {
System.out.println("ADD RESULTING DAMAGE PICTURE - NO FILE EXISTS!!!");
}
return;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SHOOT_DAMAGE_PICTURE && resultCode == RESULT_OK) {
final String encodedPicture = data.getStringExtra("PATH_TO_PICTURE");
System.out.println("PICTURE RESULT = " + encodedPicture);
addResultingDamagePicture(encodedPicture);
} else {
System.out.println("ON ACTIVITY RESULT = NOT OK");
return;
}
}
На первый взгляд, вам не хватает, чтобы освежить ваш взгляд, ср. http://stackoverflow.com/questions/5991968/how-to-force-an-entire-layout-view-refresh – TAM
Вы можете попробовать Hierarchy Viewer, чтобы посмотреть, где было просмотрено: https://developer.android.com/ tools/help/hierarchy-viewer.html –
Does 'View damagePictureSet = layoutInflater.from (this) .inflate (R.layout.damage_picture_set, picturesCell, true);' вместо 'View damagePictureSet = layoutInflater.from (this) .inflate (R.layout.damage_picture_set, picturesCell, false); 'help? – jaibatrik