2017-01-24 6 views
0

Я хочу, чтобы мой ImageView и TextView быть сосредоточен в моем ViewHolder.Android - центр изображения внутри адаптера

Визуальное представление о том, что он выглядит как в тот момент, когда я нажимаю на него:

Visual representation of what it looks like

Он сдвинут влево, так что, когда я нажимаю его, это право «Обзор матча» из изображение также.

ImageAdapter.java

public class ImageAdapter extends BaseAdapter { 
    private Context mContext; 


    public ImageAdapter(Context c) { 
     mContext = c; 
    } 

    public int getCount() { 
     return mThumbIds.length; 
    } 

    public Object getItem(int position) { 
     return null; 
    } 

    public long getItemId(int position) { 
     return 0; 
    } 

    // create a new ImageView for each item referenced by the Adapter 
    public View getView(final int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = LayoutInflater.from(mContext); 
     final ViewHolder holder; 

     if (convertView == null) { // if it's not recycled, initialize some 
      // attributes 
      convertView = inflater.inflate(R.layout.item_level_single, null, true); 
      holder = new ViewHolder(); 
      holder.image = (ImageView) convertView 
        .findViewById(R.id.myImageView); 

      holder.number = (TextView) convertView 
        .findViewById(R.id.myImageViewText); 
      convertView.setTag(holder); 

     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.image.setImageResource(mThumbIds[position]); 
     if (position == 0){ 
      holder.number.setText("1"); 
     }if (position == 1){ 
      holder.number.setText("2"); 
     }if (position == 2){ 
      holder.number.setText("3"); 
     }if (position == 3){ 
      holder.number.setText("4"); 
     }if (position == 4){ 
      holder.number.setText("5"); 
     }if (position == 5){ 
      holder.number.setText("6"); 
     }if (position == 6){ 
      holder.number.setText("7"); 
     }if (position == 7){ 
      holder.number.setText("8"); 
     }if (position == 8){ 
      holder.number.setText("9"); 
     } 



     return convertView; 
    } 

    // references to our images 
    private Integer[] mThumbIds = { 

      R.drawable.ic_round, R.drawable.ic_round, 
      R.drawable.ic_round, R.drawable.ic_round, 
      R.drawable.ic_round, R.drawable.ic_round, 
      R.drawable.ic_round, R.drawable.ic_round, 
      R.drawable.ic_round, 

    }; 


    private static class ViewHolder{ 
     public ImageView image; 
     public TextView number; 

    } 

} 

item_single.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_centerInParent="true" 
    android:id="@+id/single" 
    > 

    <ImageView 
     android:id="@+id/myImageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_oval_big_white" 
     /> 

    <TextView 
     android:id="@+id/myImageViewText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/myImageView" 
     android:layout_alignTop="@+id/myImageView" 
     android:layout_alignRight="@+id/myImageView" 
     android:layout_alignBottom="@+id/myImageView" 
     android:gravity="center" 
     android:text="1" 
     android:textColor="#000000" /> 


</RelativeLayout> 

EDIT - добавил item_single.xml

+1

Можете ли вы показать структуру xml строки адаптера? –

+0

поместите свое изображение и текстовое изображение в RelativeLayout и установите 'layout_centerInParent =" true "' –

+0

, пожалуйста, см. Edit –

ответ

1

Ребенок RelativeLayout должен иметь свойство centerInParent = True.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/single"> 

    <ImageView 
     android:id="@+id/myImageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_oval_big_white" 
     android:layout_centerInParent="true"/> 

    <TextView 
     android:id="@+id/myImageViewText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/myImageView" 
     android:layout_alignTop="@+id/myImageView" 
     android:layout_alignRight="@+id/myImageView" 
     android:layout_alignBottom="@+id/myImageView" 
     android:gravity="center" 
     android:text="1" 
     android:textColor="#000000" 
     android:layout_centerInParent="true" /> 

</RelativeLayout> 
0

Добавить ниже Недвижимость в ImageView раздел.

android:layout_centerHorizontal="true" 
android:layout_gravity="center" 

Если это правда, центры этого ребенка по горизонтали в пределах его родителя.

EDIT

Вы можете попробовать с

<ImageView 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_gravity="center" 
android:scaleType="center" 
android:src="@drawable/your_image" 
/> 
0

Попробуйте добавить это внутри ImageView:

android:layout_gravity="center_vertical" 
0

Добавить эту линию на вашем ImageView и вашей TextView

android:layout_centerInParent="true" 
0

Обновления вашего <ImageView> С ниже кода:

<ImageView 
android:id="@+id/myImageView" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_centerHorizontal="true" 
android:src="@drawable/ic_oval_big_white" 
/> 
0

@ H.Brooks увидеть, если вы использовали onItemClickListener из ListView и не используете щелчок слушателя только изображения, то это произойдет. Я предлагаю вам изменить ваш адаптер, как показано ниже:

public class ImageAdapter extends BaseAdapter { 
    private Context mContext; 


    public ImageAdapter(Context c) { 
     mContext = c; 
    } 

    public int getCount() { 
     return mThumbIds.length; 
    } 

    public Object getItem(int position) { 
     return null; 
    } 

    public long getItemId(int position) { 
     return 0; 
    } 

    // create a new ImageView for each item referenced by the Adapter 
    public View getView(final int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = LayoutInflater.from(mContext); 
     final ViewHolder holder; 

     if (convertView == null) { // if it's not recycled, initialize some 
      // attributes 
      convertView = inflater.inflate(R.layout.item_level_single, null, true); 
      holder = new ViewHolder(); 
      holder.image = (ImageView) convertView 
        .findViewById(R.id.myImageView); 

      holder.number = (TextView) convertView 
        .findViewById(R.id.myImageViewText); 
      convertView.setTag(holder); 

     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.image.setOnClickListener(new View.OnClickListener() { 
     @Override 
      public void onClick(View v) { 
      if (position == 0){ 
       holder.number.setText("1"); 
      }if (position == 1){ 
      holder.number.setText("2"); 
      }if (position == 2){ 
      holder.number.setText("3"); 
      }if (position == 3){ 
      holder.number.setText("4"); 
      }if (position == 4){ 
      holder.number.setText("5"); 
      }if (position == 5){ 
      holder.number.setText("6"); 
      }if (position == 6){ 
      holder.number.setText("7"); 
      }if (position == 7){ 
      holder.number.setText("8"); 
      }if (position == 8){ 
      holder.number.setText("9"); 
      } 
      } 
     }); 

     holder.image.setImageResource(mThumbIds[position]); 

     return convertView; 
    } 

    // references to our images 
    private Integer[] mThumbIds = { 

      R.drawable.ic_round, R.drawable.ic_round, 
      R.drawable.ic_round, R.drawable.ic_round, 
      R.drawable.ic_round, R.drawable.ic_round, 
      R.drawable.ic_round, R.drawable.ic_round, 
      R.drawable.ic_round, 

    }; 


    private static class ViewHolder{ 
     public ImageView image; 
     public TextView number; 

    } 

} 
Смежные вопросы