Pergunta

Eu tenho um esquema semelhante ao ICS aplicativo do Gmail para tablets (ListFragment na esquerda, e o conteúdo do direito) e eu queria saber como eu poderia ir sobre a construção de layouts de tal forma que há uma sombra de separação entre os dois fragmentos (como no aplicativo do Gmail, mostrado abaixo)

.Just look at that beautiful shadow!

Além disso, como este é aplicável a esta questão, como pode eu ter que bom triângulo/marcador de seta na lista ativa do item layout?Eu suponho que para implementar isso, o ListView se deve mentir acima a sombra "de camada", mas eu não tenho nenhuma idéia de como criar.

Foi útil?

Solução

Só para deixar todo mundo sabe (porque parece haver uma falta de informações lá fora sobre este tópico), este é realizado dentro do plano de fundo do seletor de XML do indivíduo lista de linhas' a vista.Por exemplo, esta é a tela principal do layout,

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

Mas a magia vem no 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>

Definindo estes como 9-patch drawables como este, você pode ter cada item da lista contribuir com ele largura do vale da sombra para que a linha no meio, e quando ele é ativado, esse segmento da sombra será substituído por uma seta.Espero que isso ajude alguém, pois de certeza que me ajudou!

Outras dicas

Eu estou querendo fazer a mesma coisa que você está tentando fazer;criar um efeito que um fragmento é "mais" do que o outro.

Roboguy a resposta lida como ter a seta branca "selector" sobre o item da lista;Vou tentar ser mais específico sobre as sombras.Outro bom exemplo do uso de seletores de fundo pode ser visto no código fonte do Google IO de 2011 App. Uma vez que você tiver a fonte, olha os fragment_dashboard.xml ícone de seletores.

A sombra do separador é um gradiente aplicado para o lado esquerdo da vista.Há duas partes;

Primeiro, o "sombra" em si:

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>

Então, para realmente aplicar um layout:

layout/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>

Isso tem que ser feito com um parente de layout (de meu conhecimento).Se você estiver usando um layout linear, você pode quebrar todo o linearLayout dentro de um parente de layout e, em seguida, adicione o com o gradiente.

Observe que, se você fizer isso, o gradiente <View> tem de se ir abaixo os <LinearLayout>;caso contrário, o gradiente que vai ser elaborado sob a linear layout, então você não vai vê-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top