在列表项布局中设置重力

时间:2013-04-06 18:48:52

标签: android listview gravity

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

这是我的代码:

    <?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>

这是我的Cursor及其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>

2 个答案:

答案 0 :(得分:2)

android:layout_gravity

以来的TextViews中删除android:layout_width="match_parent"

OR

制作android:layout_width="wrap_content"并从两个TextView中删除android:gravity

ELSE

您也可以尝试使用具有android:layout_width =“wrap_content”和android:layout_alignParentLeft或android:layout_alignParentRight的TextViews的RelativeLayout相应地设置为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的主布局文件。

答案 1 :(得分:0)

尝试更改android:orientation="vertical"  至 android:orientation="horizontal"

希望这有助于你