2013-04-06 41 views
1

我在设置列表项目布局的重力时遇到问题。我有一个列表布局,其中有2个textview。第一个有重力,第二个有重力。当我加载列表视图时,我总是得到正确的引力。在列表项目布局中设置重力

这里是我的代码:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/poem_verse_list_item_01" 
     style="@style/TextAppearanceMedium" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:gravity="right" /> 

    <TextView 
     android:id="@+id/poem_verse_list_item_02" 
     style="@style/TextAppearanceMedium" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="left" 
     android:gravity="left" /> 

</LinearLayout> 

这里是我的光标及其ViewBinder:

public class CustomViewBinder implements ViewBinder { 

    @Override 
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) { 

     int getIndex = cursor.getColumnIndex(ClubCP.COLUMN_POSITION); 
     int position = cursor.getInt(getIndex); 
     // Log.i("ViewBinder position",position); 




     TextView right =(TextView)view; 
     int viewId = view.getId(); 
     switch(position){ 
     case 0 : 
      // Right = 0, 

      if(viewId==R.id.poem_verse_list_item_02){ 
       view.setVisibility(view.GONE); 
      } 
      else if(viewId==R.id.poem_verse_list_item_01){ 
       view.setVisibility(view.VISIBLE); 
      } 
      //left.setVisibility(left.GONE); 
      //right.setGravity(Gravity.RIGHT); 
      // text.setVisibility(text.GONE); 
      // return true; 
     case 1: 
       //  Left = 1, 
      if(viewId==R.id.poem_verse_list_item_02){ 
       view.setVisibility(view.GONE); 
      } 
      else if(viewId==R.id.poem_verse_list_item_01){ 
       view.setVisibility(view.VISIBLE); 
      } 

      //left.setVisibility(left.GONE); 
      //right.setGravity(Gravity.LEFT); 
      // return true; 
     case 2: 
     case 3: 

     case 4: 

     case -1: 

     } 


     return false; 
     } 
} 

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.poem_verse_list_item, c, 
       columns, new int[] {R.id.poem_verse_list_item_01,R.id.poem_verse_list_item_02}, 0); 

我测试了很多,但我每次得到的只是权利或对他们俩的离开重心... 我希望有一个人可以帮助我。谢谢你的时间。

这是我的活动,包括ListView的布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/FrameLayout1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#ff64512f" 
android:paddingBottom="0dp" 
android:paddingLeft="0dp" 
android:paddingRight="0dp" 
android:paddingTop="0dp" 
tools:context=".Read_peom" > 

<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:scaleType="fitXY" 
    android:src="@drawable/list_top_repeat" /> 

<ImageView 

    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:scaleType="fitXY" 
    android:src="@drawable/list_bottom_repeat" /> 

<ImageView 

    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:scaleType="fitXY" 
    android:src="@drawable/list_left_repeat" /> 

<ImageView 

    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="right" 
    android:scaleType="fitXY" 
    android:src="@drawable/list_right_repeat" /> 

<ImageView 

    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:scaleType="fitXY" 
    android:src="@drawable/list_top_left_no_repeat" /> 

<ImageView 

    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="right" 
    android:src="@drawable/list_top_right_no_repeat" /> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:src="@drawable/list_bottom_left_no_repeat" /> 

<ImageView 

    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|right" 
    android:src="@drawable/list_bottom_right_no_repeat" /> 

<TextView 
    android:id="@+id/txt_poem_container_header" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" /> 

<ListView 
    android:id="@+id/list_poem_container" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical|center_horizontal|center" 
    android:layout_margin="@dimen/list_top_margin" 
    android:choiceMode="none" 
    android:clickable="false" 
    android:longClickable="false" 
    android:padding="5dp" > 

</ListView> 

+0

即时能看到两个对齐正确与上面的布局,但是android:layout_gravity =“right”&android:layout_gravity =“left”不需要,请分享您的主布局 – Akhil 2013-04-06 19:22:44

+0

谢谢我的朋友我添加了我的活动布局 – Majid 2013-04-07 07:34:09

回答

0

尝试改变android:orientation="vertical"android:orientation="horizontal"

希望这有助于你

因为 android:layout_width="match_parent"无论从TextViews
+0

我改变了它,但这次所有的文本都与左引号 – Majid 2013-04-06 19:15:28

2

删除android:layout_gravity

OR

使android:layout_width="wrap_content",并从两个TextViews删除android:gravity

ELSE

您还可以尝试使用其他的Android TextViews一个RelativeLayout的:layout_width = “WRAP_CONTENT” 和android:layout_alignParentLeft或Android:layout_alignParentRight相应地设置为true。

编辑: 要调试问题,请执行以下操作。用静态数据创建一个ArrayAdapter并将其设置为列表适配器。

String[] arr = {"a","b","c"}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.poem_verse_list_item, R.id.poem_verse_list_item_01, arr); 
    setListAdapter(adapter); 
} 

然后设置一些值使用android:text到这样的TextViews。

<TextView 
    android:id="@+id/poem_verse_list_item_01" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="right" 
    android:gravity="right" 
    android:text="poem_verse_list_item_01" /> 

<TextView 
    android:id="@+id/poem_verse_list_item_02" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="left" 
    android:gravity="left" 
    android:text="poem_verse_list_item_02"/> 

所以如果问题依然存在,那么问题不在于视图联编程序。我建议你重新设计包含ListView的主布局文件。

+0

我测试了这个,但仍然所有的textviews进来右侧..但我希望其中一些与左引力和其他人同时 – Majid 2013-04-06 19:14:34

+0

检查我的其他建议。 – appsroxcom 2013-04-06 19:21:11

+0

感谢您的帮助..但是他们都没有工作..我认为我的问题是与视图粘结剂..你可以看看它吗? – Majid 2013-04-07 07:32:28