Existe alguma maneira de adicionar um botão na parte inferior da tela de preferências e fazer com que funcionem corretamente ao rolar?
android
android-preferences
vlaku
fonte
fonte
Respostas:
Existe outra solução para personalizar a aparência das preferências.
Projete um layout XML normal com botões ou o que você quiser adicionar às preferências padrão. Inclua um
ListView
em seu layout e forneça o ID@android:id/list
.Digamos que chamemos o arquivo de layout
res/layout/main.xml
. Pode ser algo assim:No seu
PreferenceActivity
, adicione estas duas linhas ao seuonCreate
:O
ListView
em seu layout será então substituído pelas preferências definidas da maneira usual emres/xml/preferences.xml
.fonte
Sei que é um pouco tarde, mas acabei de encontrar uma solução que gosto mais do que a elogiada pelo Max.
Você pode simplesmente adicionar um rodapé (ou, se desejar que o botão fique no topo, um cabeçalho) ao ListView de PreferenceActivity, assim:
Espero que isso ajude alguém.
fonte
ListView
com PreferenceFragment :(PreferenceFragment
tem sua própria lista), mas resolvi apenas criando umPreference
e definindo umIntent
nele. Não houve necessidade de criar um botão (pelo menos no meu caso)Este exemplo abaixo irá renderizar um botão na parte inferior da página (caso alguém ainda esteja interessado).
No caso de um LinearLayout, você também pode aplicar pesos; isso é necessário porque o Listview está definido como * fill_parent *. Normalmente faço isso adicionando * android: layout_weight *:
A explicação abaixo não é provavelmente 100%, mas irá ajudá-lo a entender ...
Você também poderia dizer, porque o Botão não tem peso; o botão é renderizado na altura de 0 dp.
Agora, com o layout_weigths adicionado, ele permitirá que o botão renderize a visualização
fonte
Na verdade, existe uma solução. Aqui está um código, espero que seja útil para qualquer pessoa. Parece ter 3 opções e 2 botões na parte inferior da tela, independente da resolução da tela (foi direcionado para 240 como o mais baixo)
fonte
Você só precisa usar PreferenceFragment dentro da Activity geral e adicionar o botão no layout da atividade.
SettingActivity.java
activity_setting
fonte
buttonSave
:)Essa seria a aparência do código na atividade do exemplo do ronny. Minha intenção era colocar um menu na parte inferior da tela.
fonte
Eu faço referência a @Ronnie, uso RelativeLayout e defino uma altura para layout_height de listview e, em seguida, defino layout_alignParentBottom = "true", ele pode renderizar um botão na parte inferior de PreferenceScreen; em seguida, use a forma de @Max. funciona para minhas necessidades.
fonte
Também é possível adicionar botões de ação à barra de ação para uma abordagem padrão do Android.
fonte
Visualização personalizada na Atividade de preferência isso ajudará a adicionar visualização personalizada em PreferenceActivity no Android.
Criar main.xml, a visão só é necessário é um ListView, com id:
android:id="@android:id/list"
.Crie CustomPreferenceActivity.java
fonte
A seguir está uma solução simples para adicionar um botão clicável à sua tela de preferências. Isso é facilitado porque as preferências já reservam espaço no android: widgetLayout e o botão pode passar cliques com android: onClick.
Primeiro crie um button.xml com o conteúdo
Agora em seu preferences.xml, adicione a preferência
Sua PreferenceActivity agora só deve conter um membro onButtonClick
fonte
preferências.xml:
SettingsFragment.java:
fonte
Achei todas as respostas acima inutilizáveis, pois quaisquer layouts que criei para 'envolver' o
PreferenceScreen
contêiner dentro de layouts personalizados (em seguida, adicionar um botão abaixo deListView
) realmente não funcionou.Eles apenas sobrepuseram o layout personalizado no topo da lista de preferências (flutuante), e clicar (por exemplo) em um novo botão personalizado apenas invocaria a preferência abaixo do botão.
No entanto, achei esta solução que funciona um deleite para adicionar um botão abaixo do recipiente da lista de preferências, ao usar
PreferenceFragment
.fonte