문제

기본 활동 레이아웃에 정의된 ListView를 사용하는 탐색 서랍이 있습니다.

<!-- Navigation drawer (left) -->
<ListView android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:choiceMode="singleChoice"
    android:divider="@android:color/darker_gray"
    android:dividerHeight="1dp"
    android:background="#e5e5e5"/>

그리고 나는 그것을 다음과 같이 채웁니다:

navMenuItems = getResources().getStringArray(R.array.NavMenuItems);
navDrawerList = (ListView) findViewById(R.id.left_drawer);

// Set the adapter for the list view
navDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.nav_list_item, navMenuItems));

다음과 같이 ArrayAdapter TextView 리소스 ID를 전달해야 하므로 메뉴 항목에 TextView만 포함된 별도의 레이아웃 파일을 사용합니다.

nav_list_item.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/nav_menu_text"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:layout_gravity="right"
    android:gravity="right"
    android:layoutDirection="rtl"
    android:paddingBottom="5dp"
    android:paddingTop="5dp"
    android:paddingRight="8dp"
    android:textColor="@android:color/white"
    android:textSize="50sp"
    android:textIsSelectable="true"
    android:textAlignment="textStart"
    android:textDirection="anyRtl" >
</TextView>

하지만, TextView는 아무런 효과가 없으며 어떤 속성이 변경되더라도 메뉴 항목은 동일하게 표시됩니다!

왜 이런 일이 발생합니까?내가 여기서 뭘 잘못하고 있는 걸까?

도움이 되었습니까?

해결책 4

해결책을 찾았습니다.

탐색 목록에 대한 사용자 정의 어댑터를 만들었습니다. getView() (@override) 내 것을 사용했습니다. textView:

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View v = convertView;

    if (v == null) {
        Log.d("Log", "Null v");
        LayoutInflater vi;
        vi = LayoutInflater.from(getContext());
        v = vi.inflate(R.layout.nav_list_item, null);
    }


    String s = values.get(position);

    TextView textView = (TextView) v.findViewById(R.id.nav_menu_text);
    textView.setText(s);

    return v;
}

이제 textView 효력을 발휘합니다.

다른 팁

리소스에서는 다음을 제공해야 합니다. layout 대신에 id 텍스트 보기

new ArrayAdapter<String>(this, R.layout.'yourlayoutname', navMenuItems)

어댑터가 navitem의 콘텐츠를 매핑할 뷰를 알 수 있도록 매개변수를 추가해야 합니다.

세 번째 매개변수로 텍스트뷰의 ID를 추가합니다.이와 같이:

new ArrayAdapter<String>(this, R.layout.nav_list_item, R.id.nav_menu_text, navMenuItems)

대신에

new ArrayAdapter<String>(this, R.layout.nav_list_item, navMenuItems)

확실하지는 않지만 텍스트 뷰의 ID를 사용하고 싶지 않은 경우 id 필드 이름을 android.R.layout.simple_list_item_1의 텍스트 뷰 ID인 "text01"로 지정하면 작동할 수 있습니다.

이 시도:

new ArrayAdapter<String> (Context context, R.layout.nav_list_item, R.id.nav_menu_text, navMenuItems);

이것이 당신에게 도움이 되기를 바랍니다...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top