문제

태블릿용 ICS Gmail 앱과 유사한 레이아웃이 있습니다(ListFragment 왼쪽에는 콘텐츠, 오른쪽에는 콘텐츠) 그리고 두 조각 사이에 그림자 구분 기호가 있도록 레이아웃을 구성할 수 있는 방법이 궁금했습니다(아래 표시된 Gmail 앱처럼).

.Just look at that beautiful shadow!

또한 이것이 이 질문에 적용 가능하므로 활성 목록 항목의 레이아웃에 멋진 삼각형/화살표 표시를 어떻게 가질 수 있습니까?이것을 구현하려면 ListView 자체가 거짓말을 해야 한다고 가정합니다. ~ 위에 그림자 "레이어"가 있는데 어떻게 만드는지 모르겠어요.

도움이 되었습니까?

해결책

모든 사람에게 알리기 위해(이 주제에 대한 정보가 부족한 것 같기 때문에) 개별 목록 행 보기의 배경 선택기 XML 내에서 이 작업이 수행됩니다.예를 들어 메인화면의 레이아웃은 이렇습니다.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list_row"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@drawable/list_item_selector">

    ...<!-- Rest of layout goes here -->

</RelativeLayout>

하지만 마법은 list_item_selector:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/list_pressed" />
    <item android:state_activated="true" android:drawable="@drawable/list_arrow_activated"  />
    <item android:drawable="@drawable/list_default" />
</selector>

이와 같이 이를 9패치 드로어블로 정의하면 각 목록 항목이 중간에 있는 해당 선에 그림자 너비만큼 기여하도록 할 수 있으며, 활성화되면 해당 그림자 세그먼트가 화살표로 대체됩니다.이것이 나에게 도움이 되었기 때문에 이것이 누군가에게 도움이 되기를 바랍니다!

다른 팁

나는 당신이 하려는 것과 똑같은 일을 하려고 합니다.한 조각이 다른 조각보다 "더 가깝다"는 효과를 만듭니다.

Roboguy의 답변은 목록 항목에 흰색 화살표 "선택기"를 갖는 방법을 처리합니다.나는 그림자에 대해 좀 더 구체적으로 설명하려고 노력할 것입니다.배경 선택기 사용의 또 다른 좋은 예는 Google IO 2011 앱의 소스 코드에서 볼 수 있습니다. 소스가 있으면 조각_dashboard.xml 아이콘 선택기를 살펴보세요.

그림자 구분 기호는 뷰의 왼쪽에 적용되는 그라데이션입니다.두 부분이 있습니다.

첫째, "그림자" 자체:

res/shadow_left.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
    android:angle="0"
    android:startColor="#55000000" 
    android:endColor="#00000000"
    />
</shape>

그런 다음 실제로 레이아웃에 적용하려면 다음을 수행합니다.

레이아웃/my_lower_layer

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
<View
    android:layout_width="20dp"
    android:layout_height="fill_parent"
    android:background="@drawable/fragment_shadow_left" />
<ImageView
    android:id="@+id/imageview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true" />
</RelativeLayout>

(제가 아는 한) 상대적인 레이아웃을 사용하여 이 작업을 수행해야 합니다.선형 레이아웃을 사용하는 경우 전체 선형 레이아웃을 상대 레이아웃 내부에 래핑한 다음 그라데이션을 추가할 수 있습니다.

이렇게 하면 그라데이션이 <View> 아래로 가야해요 <LinearLayout>;그렇지 않으면 그라데이션이 선형 레이아웃 아래에 그려지므로 볼 수 없습니다.

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