2013-07-29 97 views
0

我試試這個:顯示一個ImageView的下面一個TextView在GridView

main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal" 
android:id="@+id/mainLayout"> 
<GridView 
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
android:numColumns="2" 
android:id="@+id/gridView1_bir"> 
</GridView> 
</LinearLayout> 

grid_prueba1.xml

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 

android:layout_height="wrap_content" 
android:background="#DC0000" 
android:orientation="vertical" 
android:layout_width="fill_parent"  
android:id="@+id/relaGrid" 
> 


<ImageView 
    android:id="@+id/img2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

    /> 

<TextView 
    android:id="@+id/txt2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/img2"  

    android:text="TextView" 
    android:textColor="#FFFFFF" /> 

</RelativeLayout> 

ImgeAdapter.java

package es.ejemplo.gridviewprueba; 

import java.io.FileInputStream; 
import java.io.InputStream; 
import java.net.URI; 
import java.net.URL; 

import android.R.integer; 
import android.app.Activity; 
import android.content.Context; 
import android.graphics.BitmapFactory; 
import android.graphics.drawable.Drawable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 
import android.widget.ListAdapter; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

    public class ImageAdapter extends BaseAdapter implements ListAdapter { 

private Context context; 
public ImageAdapter(Context context) { 
    super(); 
    this.context = context; 
    GridViewConfig.addImageUrls(); 
} 

@Override 
public int getCount() { 
    return GridViewConfig.getResim_list().size(); 
} 

@Override 
public Object getItem(int position) { 

    return GridViewConfig.getResim_list().get(position); 
} 

@Override 
public long getItemId(int position) { 

    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    View myView; 

    if(convertView==null) 
    { 

     LayoutInflater li = ((Activity)context).getLayoutInflater(); 
     myView = li.inflate(R.layout.grid_prueba1, null); 
     myView.setLayoutParams(new GridView.LayoutParams(100,100)); 
     myView.setPadding(5,5,5,5); 


    }else{ 

     myView = (View)convertView; 

    } 

    ImageView img = (ImageView)myView.findViewById(R.id.img2); 
     img.setImageDrawable(LoadImageFromURL(GridViewConfig.getResim_list().get(position))); 
    TextView txt = (TextView)myView.findViewById(R.id.txt2); 
    txt.setText("Adept0000"+position); 

    return myView; 
} 


private Drawable LoadImageFromURL(String url) 
{ 
try 
{ 
InputStream is = (InputStream) new URL(url).getContent(); 

Drawable d = Drawable.createFromStream(is, "src"); 
return d; 
}catch (Exception e) { 
System.out.println(e); 
return null; 
} 
} 

    } 

而GridviewConfig是一個加載圖片網址的類。

MyGridView.java

package es.ejemplo.gridviewprueba; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 

import android.widget.AdapterView; 
import android.widget.GridView; 
import android.widget.Toast; 

public class MyGridView extends Activity { 
private GridView girGridView; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    girGridView=(GridView) findViewById(R.id.gridView1_bir); 

    girGridView.setAdapter(new ImageAdapter(this)); 

    girGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View view, int position,long arg3) { 
      Toast.makeText(getApplicationContext(), GridViewConfig.getResim_list().get(position), Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

} 

利用該代碼在GridView我加載圖像與文本的上方。我假裝文字低於圖片的描述或標題。

我已經看了幾個imageview和gridview與texview的例子,但我無法解決我的問題。你能幫我嗎?

+0

ü希望把textview放在imageview上?和imageview放在gridview?這是什麼你的問題說 – KOTIOS

+1

使用'android:layout_below = @ + id/img2'並刪除'android:layout_alignBottom =「@ + id/img2」' –

+0

只使用相對佈局,你可以把你的所有元素repsect到你的元素問題解決 – Giant

回答

2

可能是你的問題是 「TextView中是不可見的運行之後(在畫廊的風格顯示的TextView)」

然後

在圖庫中顯示圖像與總屏幕後,視圖不可見。

所以搬到畫廊custamization是正確的選擇。

將您的圖片縮放爲250 * 200(根據您的要求)並將圖片設置爲imageview。

然後,可以看到剩餘的視圖。

我更改代碼

你gallery_style:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relaGrid" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#DC0000" 
    android:orientation="vertical" > 

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

    <TextView 
     android:id="@+id/txt2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/img2" 
     android:text="TextView" 
     android:textColor="#FFFFFF" /> 

</RelativeLayout> 

你的畫廊適配器getView();

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View myView; 

     LayoutInflater li = ((Activity) context).getLayoutInflater(); 
     myView = li.inflate(R.layout.grid_prueba1, null); 
     ImageView img = (ImageView) myView.findViewById(R.id.img2); 
     TextView txt = (TextView) myView.findViewById(R.id.txt2); 

     Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), 
       R.drawable.ic_launcher); 
     Bitmap bitmap2 = Bitmap.createScaledBitmap(bitmap, 250, 200, true); 

     img.setImageBitmap(bitmap2); 

     txt.setText("Some text"); 

     return myView; 
    } 

enter image description here

+1

我不明白我的程序有什麼問題。我嘗試過使用LinearLayout和RelativeLayout,但不起作用。 Venky我使用Bitmap類進行了測試,並嘗試使用myBitmap.createScaledBitmap(myBitmap,250,200,true),但對我而言都不適用。這調整了圖像的大小,但我仍然沒有看到textview,問題不明白。但是,感謝您的幫助。我一直在努力。 – Garmael

+0

設置ImageView大小60dp * 60dp並以圖形佈局查看您的xml文件 – Venky

0

請說明您的問題

我想可能是你想要這個

的TextView是ImageView的的bottem。

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/relaGrid" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#DC0000" 
     android:orientation="vertical" > 

     <ImageView 
      android:id="@+id/img2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/ic_launcher" /> 

     <TextView 
      android:id="@+id/txt2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="TextView" 
      android:textColor="#FFFFFF" /> 

    </LinearLayout> 

如果你想使用的RelativeLayout使用

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relaGrid" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#DC0000" 
    android:orientation="vertical" > 

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

    <TextView 
     android:id="@+id/txt2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/img2" 
     android:text="TextView" 
     android:textColor="#FFFFFF" /> 

</RelativeLayout> 
+0

我想要imageview下的文本,但不會出現在imageview中。這是你寫的,我已經嘗試過,但不起作用。 – Garmael

+0

使用上面的線性佈局代碼其工作很好我 – Venky

+0

你不想那樣請圖像 – Venky

0

好的,謝謝Venky。有了這個,我已經解決了我的問題。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    View myView; 

    if(convertView==null) 
    { 

     LayoutInflater li = ((Activity)context).getLayoutInflater(); 
     myView = li.inflate(R.layout.grid_prueba, null); 
     //myView.setLayoutParams(new GridView.LayoutParams(100,100)); 
     myView.setPadding(5,5,5,5); 


    }else{ 

     myView = (View)convertView; 

    } 


    ImageView img = (ImageView)myView.findViewById(R.id.img1); 
    //img.setImageDrawable(LoadImageFromURL(GridViewConfig.getResim_list().get(position))); 
    img.setImageBitmap(getBitmapFromURL(GridViewConfig.getResim_list().get(position))); 
    TextView txt = (TextView)myView.findViewById(R.id.txt1); 
    txt.setText("Adept0000"+position); 

    return myView; 
} 


public static Bitmap getBitmapFromURL(String src) { 
    try { 
     URL url = new URL(src); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoInput(true); 
     connection.connect(); 
     InputStream input = connection.getInputStream(); 
     Bitmap myBitmap = BitmapFactory.decodeStream(input); 
     Bitmap myBitmap1 = myBitmap.createScaledBitmap(myBitmap, 250, 200, true); 
     return myBitmap1; 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

我必須調整圖像和文字,但它的作品。謝謝你們。

0

我編輯您的grid_prueba1.xml文件

所以,請將此代碼粘貼到您的grid_prueba1.xml

,看看你的圖形佈局可能是其做工精細你

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/relaGrid" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#DC0000" 
     android:orientation="vertical" > 

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

     <TextView 
      android:id="@+id/txt2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/img2" 
      android:text="TextView" 
      android:textColor="#FFFFFF" /> 

    </RelativeLayout> 
相關問題