2016-08-04 20 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不允许堆叠,并简单地将下一个视图添加到下一个可用空间。