3

I want to inflate a view with only an image to be above my main layout center screen, so far I only am able to add an inflated view as the first child of my main layout. How can I inflate an imageview to be above my other views and be in the center of the screen?

LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        layout = inflater.inflate(R.layout.image_preview,(ViewGroup)findViewById(R.id.previewHolder));
        ((LinearLayout) (LinearLayout)findViewById(R.id.fullScreen)).addView(layout);//add inflated to main view

Main layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
 >

<LinearLayout
    android:id="@+id/fullScreen"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</LinearLayout>

<TableLayout
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:focusableInTouchMode="true"
    android:stretchColumns="*" >
    ........................
   </TableLayout>
   </LinearLayout>

Activity

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_testing_cam);
            badge.setOnClickListener(btnListener);
          }
  private OnClickListener btnListener = new OnClickListener() { 

         @Override
       public void onClick(View v) {
           //SELECTS BUTTON ACTIONS
        switch(v.getId()){

            case R.id.status:
                finish();
                break;
            default:
                previewImages(v.getId());
                break;
        }
    }
}; 
            //CARRY OUT IMAGE FUNCTIONS
public void previewImages(int index){
    try{

        LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        layout = inflater.inflate(R.layout.image_preview,(ViewGroup)findViewById(R.id.previewHolder));
        ((LinearLayout) (LinearLayout)findViewById(R.id.fullScreen)).addView(layout);



    ImageView iv = (ImageView)findViewById(R.id.previewImage);
    BitmapDrawable drawable = (BitmapDrawable) ((ImageView) showCase.getChildAt(index)).getDrawable();
    Bitmap bitmap = drawable.getBitmap();
    iv.setImageBitmap(bitmap);
    ((LinearLayout) (LinearLayout)findViewById(R.id.fullScreen)).bringToFront();
    }catch(Exception e){ Log.i("ERROR FLATE", e.toString()); }
    return;
}

View being inflated

<?xml version="1.0" encoding="utf-8"?>

<ImageView
    android:id="@+id/previewImage"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:adjustViewBounds="true"
    android:scaleType="fitXY"/>

4

1 回答 1

1

如果你想在 fullScreen 和 root 之上添加预览,你应该修改你的父布局。 LinearLayout垂直排列它的孩子,而在这种情况下,您需要使用 aFrameLayout或 aRelativeLayout代替。像这样的东西:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:focusable="true">

  <!-- your previous content -->
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">

    <LinearLayout
      android:id="@+id/fullScreen"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >
    </LinearLayout>

    <TableLayout
      android:id="@+id/root"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_gravity="center"
      android:focusableInTouchMode="true"
      android:stretchColumns="*" >
      ........................
    </TableLayout>

  </LinearLayout>

  <!-- your preview -->
  <ImageView
    android:id="@+id/preview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:visibility="gone"/>

</RelativeLayout>

单击时您所要做的就是更改 to 的可见性preview ImageViewvisible相应地设置其来源。

于 2013-04-20T21:31:59.487 回答