2

我在设置列表项布局的重力时遇到问题。我有一个包含 2 个文本视图的列表布局。第一个有右重力,第二个有左重力。当我加载列表视图时,我总是得到正确的重力。

这是我的代码:

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

4

2 回答 2

2

android:layout_gravity从两个 TextViews 中删除android:layout_width="match_parent"

或者

从两个 TextView 中创建android:layout_width="wrap_content"和删除。android:gravity

别的

您也可以尝试使用具有 android:layout_width="wrap_content" 和 android:layout_alignParentLeft 或 android:layout_alignParentRight 设置为 true 的 TextView 的 RelativeLayout。

编辑:要调试问题,请执行以下操作。使用静态数据创建一个 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 的主布局文件。

于 2013-04-06T19:07:50.450 回答
0

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

希望这对你有帮助

于 2013-04-06T19:02:32.373 回答