2017-02-04 10 views
0

Я делаю маленькую маленькую игру, и сейчас я работаю над меню для изменения настроек. Я создал новую активность и фрагмент с PreferenceScreen и одним ListPreference. Проблема только в том, что когда я нажимаю кнопку в основном действии, чтобы запустить активность настроек, она не помещается в верхней части экрана, она помещается на полпути вниз по экрану. Я хотел бы, чтобы эта деятельность была в верхней части экрана, как я могу это сделать?Новая деятельность размещена на полпути вниз

Скриншот: http://i68.tinypic.com/288cue.png (нужно 10 репутации напрямую размещать)

Рез/XML/preferences.xml:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <ListPreference 
     android:dependency="pref_sync" 
     android:key="pref_sync" 
     android:title="@string/pref_syncConnectionType" 
     android:dialogTitle="@string/pref_syncConnectionType" 
     android:entries="@array/pref_syncConnectionTypes_entries" 
     android:entryValues="@array/pref_syncConnectionTypes_values" 
     android:defaultValue="@string/pref_syncConnectionTypes_default" /> 
</PreferenceScreen> 

SettingsActivity:

package com.example.eiria.pressit; 

import android.app.Activity; 
import android.os.Bundle; 

public class SettingsActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_settings); 

     getFragmentManager().beginTransaction() 
       .replace(android.R.id.content, new SettingsFragment()) 
       .commit(); 
    } 
} 

SettingsFragment:

package com.example.eiria.pressit; 

import android.os.Bundle; 
import android.preference.PreferenceFragment; 

public class SettingsFragment extends PreferenceFragment { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     addPreferencesFromResource(R.xml.preferences); 
    } 
} 

ответ

0

Я создал activity_settings.xml и установил корневой вид вертикального LinearLayout с шириной и высотой, установленной в 1000dp. Несмотря на то, что это не очень хорошо, это было единственным рабочим решением, которое я нашел.

EDIT: У меня есть кнопка в настройках, которую я хотел выровнять в нижней части экрана. layout_gravity = "bottom" не работает, и он исчезнет с экрана, так как высота LinearLayout равна 1000dp. Поэтому я изменил на RelativeLayout и установил ширину и высоту в match_parent, а затем установил alignParentBottom кнопки в true и boom, активность настроек заполняет всю высоту экрана. К сожалению, установка выравнивания кнопкиParentLeft/Start или alignParentRight/End в true не приводит к тому, что активность настроек заполняет всю ширину экрана.

Смежные вопросы