2016-08-04 53 views
1

我想要在圖像前面可能有4行文本的列表。如果圖片太長,則圖片不能正確顯示在對方的下方,文本如果太長,則會超出圖片的佈局視圖。並鏈接問題的圖片; http://i.stack.imgur.com/zJwQg.png文字太多的ListView?

我該如何解決圖像對齊問題?我能做些什麼關於 文字?

SingleList;

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
    <TableRow> 
     <ImageView 
      android:id="@+id/img" 
      android:layout_width="150dp" 
      android:layout_height="150dp" /> 

     <TextView 
      android:id="@+id/txt" 
      android:paddingRight="50dp" 
      android:layout_marginTop="24dp" 
      android:textSize="20dp" 
      android:layout_width="wrap_content" 
      android:layout_height="50dp" /> 

    </TableRow> 
</TableLayout> 

ListClass;

import android.app.Activity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class listClass extends ArrayAdapter<String>{ 

    private final Activity context; 
    private final String[] web; 
    private final Integer[] imageId; 
    public listClass(Activity context, 
         String[] web, Integer[] imageId) { 
     super(context, R.layout.list, web); 
     this.context = context; 
     this.web = web; 
     this.imageId = imageId; 

    } 
    @Override 
    public View getView(int position, View view, ViewGroup parent) { 
     LayoutInflater inflater = context.getLayoutInflater(); 
     View rowView= inflater.inflate(R.layout.list, null, true); 
     TextView txtTitle = (TextView) rowView.findViewById(R.id.txt); 

     ImageView imageView = (ImageView) rowView.findViewById(R.id.img); 
     txtTitle.setText(web[position]); 

     imageView.setImageResource(imageId[position]); 
     return rowView; 
    } 
} 

MainActivity;

import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.view.View; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.TextView; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.app.FragmentManager; 
import android.widget.FrameLayout; 
import android.widget.Button; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListView; 
import android.widget.Toast; 
import android.app.Activity; 
import android.graphics.BitmapFactory; 




public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    ListView list; 
    String[] web = { 
      "SOMETHING ALWYAS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ", 
      "ALWYAS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWYAS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS ALWAYS " 
    } ; 
    Integer[] imageId = { 
      R.drawable.home, 
      R.drawable.pol,}; 
[enter image description here][1] 


    Handler handler; 
    Button button; 
    headercode header; 
    extra ex; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 



     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 
     Handler handle = new Handler(){ 

      @Override 
      public void handleMessage(Message msg) 
      { 
       BitmapFactory.Options options = new BitmapFactory.Options(); 
       options.inJustDecodeBounds = true; 
       BitmapFactory.decodeResource(getResources(), R.drawable.ahmed, options); 
       int imageHeight = options.outHeight; 
       int imageWidth = options.outWidth; 
       String imageType = options.outMimeType; 
      } 



     }; 



     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
     listClass adapter = new 
       listClass(MainActivity.this, web, imageId); 
     list=(ListView)findViewById(R.id.list); 
     list.setAdapter(adapter); 
     list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
            int position, long id) { 
       Toast.makeText(MainActivity.this, "You Clicked at " +web[+ position], Toast.LENGTH_SHORT).show(); 

      } 
     }); 




    } 

回答

0

嘗試使用具有以下屬性的文本視圖來保持屏幕中的行。

<TextView 
     android:id="@+id/txt" 
     android:paddingRight="50dp" 
     android:layout_marginTop="24dp" 
     android:textSize="20dp" 
     android:layout_width="wrap_content" 
     android:layout_height="50dp" 
     android:layout_weight="1" 
     android:ellipsize="none" 
     android:maxLines="100" 
     android:scrollHorizontally="false"/> 

然後,疊加上的ImageView TextView的,我建議你用的RelativeLayout,它增加了所有視圖左上角如果沒有指定其他屬性(允許視圖堆頂更換TableLayout彼此的)。 TableLayout不允許堆疊,並簡單地將下一個視圖添加到下一個可用空間。