PreferenceScreen 悬浮清除按钮
?
?
轉(zhuǎn)載自?? http://www.55228885.com/ykv9bL9p.html
?
如何添加一個(gè)按鈕,PreferenceScreen
有沒有什么辦法可以添加一個(gè)按鈕,喜好屏幕的底部,使?jié)L動時(shí),他們的工作是否正確?
--------------解決方案-------------
有用于自定義的偏好的外觀另一種解決方案。
設(shè)計(jì)的按鈕或任何你想要添加到標(biāo)準(zhǔn)的偏好正常的XML布局。 包含一個(gè)ListView的布局,并給它的ID @android:id/list 。
比方說,我們所說的布局文件res/layout/main.xml 。 它可能是這個(gè)樣子:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<Button android:text="This is a button on top of all preferences."
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
在您的PreferenceActivity這兩行添加到您onCreate
addPreferencesFromResource(R.xml.preferences);
setContentView(R.layout.main);
該ListView中的布局然后通過定義通常的方式在喜好更換res/xml/preferences.xml
我知道這是一個(gè)有點(diǎn)晚了,但我只是找到了一個(gè)解決方案,我喜歡比最高的贊譽(yù)解決方案更好。
您只需加一個(gè)腳注(或如果你喜歡的按鈕在上面,一個(gè)頭)到PreferenceActivity的ListView控件,像這樣:
public class MyActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
ListView v = getListView();
v.addFooterView(new Button(this));
}
}
我希望這可以幫助別人。
下面這個(gè)例子將呈現(xiàn)一個(gè)按鈕頁面底部(如果任何人仍然有興趣)。
如果一個(gè)LinearLayout中,你也可以申請權(quán); 這是必需的,因?yàn)榱斜硪晥D設(shè)置為* FILL_PARENT *。 我通常加入*安卓做到這一點(diǎn):layout_weight *的:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_weight="10"/>
<Button android:text="This is a button on top of all preferences."
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_weight="1"/>
</LinearLayout>
下面的解釋并不想必100%,但它會幫助你理解...
+-- View Port (linear layout)
| +-- List View (this is where the preferences will go)
| |
| |
| +--
+--
+--
| Button (which was pushed out of view by the fillparent of ListView
+--
你也可以說,因?yàn)榘粹o沒有重量; 按鈕被呈現(xiàn)在0dp高度。
現(xiàn)在,隨著layout_weigths增加會快報(bào)按鈕呈現(xiàn)inview
+-- View Port (linear layout)
| +-- List View (this is where the preferences will go)
| |
| |
| +--
| +--
| | Button (which was pushed out of view by the fillparent of ListView
| +--
+--
實(shí)際上,有一個(gè)解決方案。 下面是一個(gè)代碼,我希望,這將是任何人都有益。 它看起來像3選擇屏幕分辨率無關(guān),并在屏幕的底部2個(gè)按鈕,(是針對以240為最低)
package com.myapplication.gui;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.view.Display;
import android.view.Gravity;
import android.view.WindowManager;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ScrollView;
import com.myproject.general.HeightListView;
import com.myapplication.R;
public class FilterActivity extends PreferenceActivity {
private LinearLayout rootView;
private LinearLayout buttonView;
private Button buttonDone;
private Button buttonRevert;
private ListView preferenceView;
private LinearLayout gradientView;
private ScrollView scrollRoot;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int height = display.getHeight();
int width = height > 240 ? display.getWidth() : display.getWidth() - 4;
scrollRoot = new ScrollView(this);
scrollRoot.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
rootView = new LinearLayout(this);
rootView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
rootView.setOrientation(LinearLayout.VERTICAL);
buttonView = new LinearLayout(this);
buttonView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
buttonView.setOrientation(LinearLayout.HORIZONTAL);
buttonView.setGravity(Gravity.BOTTOM);
gradientView = new LinearLayout(this);
gradientView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
gradientView.setOrientation(LinearLayout.HORIZONTAL);
gradientView.setBackgroundResource(R.drawable.gradient);
gradientView.setPadding(0, 5, 0, 0);
gradientView.setBackgroundResource(R.drawable.gradient);
buttonDone = new Button(this);
buttonDone.setText(R.string.filterButton_Done);
buttonDone.setLayoutParams(new LayoutParams(width/2, LayoutParams.WRAP_CONTENT));
gradientView.addView(buttonDone);
buttonRevert = new Button(this);
buttonRevert.setText(R.string.filterButton_Revert);
buttonRevert.setLayoutParams(new LayoutParams(width/2, LayoutParams.WRAP_CONTENT));
gradientView.addView(buttonRevert);
buttonView.addView(gradientView);
preferenceView = new HeightListView(this);
preferenceView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
preferenceView.setId(android.R.id.list);
PreferenceScreen screen = createPreferenceHierarchy();
screen.bind(preferenceView);
preferenceView.setAdapter(screen.getRootAdapter());
rootView.addView(preferenceView);
rootView.addView(buttonView);
if (height > 240) {
this.setContentView(rootView);
}
else {
scrollRoot.addView(rootView);
this.setContentView(scrollRoot);
}
setPreferenceScreen(screen);
}
private PreferenceScreen createPreferenceHierarchy() {
PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);
PreferenceScreen pref1 = getPreferenceManager().createPreferenceScreen(this);
pref1.setKey("pref1");
pref1.setTitle("Title");
pref1.setSummary("Summary");
root.addPreference(pref1);
PreferenceScreen pref2 = getPreferenceManager().createPreferenceScreen(this);
pref2.setKey("pref2");
pref2.setTitle("Title");
pref2.setSummary("Summary");
root.addPreference(pref2);
PreferenceScreen pref3 = getPreferenceManager().createPreferenceScreen(this);
pref3.setKey("pref3");
pref3.setTitle("Title");
pref3.setSummary("Summary");
root.addPreference(pref3);
return root;
}
}
這將是什么樣的代碼看起來像在羅尼的例子活動。 我的意圖是把一個(gè)菜單在屏幕的底側(cè)。
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.prefs);
addPreferencesFromResource(R.xml.prefs);
/* LayoutInflater CX = getLayoutInflater();
CX.inflate(R.layout.main,null);*/
// TODO Auto-generated method stub
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="@dimens/listview_height" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="This is a button on top of all preferences." />
</RelativeLayout>
我引用@Ronnie,使用RelativeLayout的并設(shè)置一個(gè)高度的ListView layout_height,然后設(shè)置按鈕的layout_alignParentBottom =“true”時(shí),它可以呈現(xiàn)在PreferenceScreen底部的按鈕; 然后使用@Max的方式。 它適合我的需要。
它也可以操作按鈕添加到操作欄是Android標(biāo)準(zhǔn)方法。
public class PrefActivity extends PreferenceActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.preference_header_menu, menu);
return super.onCreateOptionsMenu(menu);
}
}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_add"
android:icon="@drawable/ic_menu_add_dark"
android:title="@string/menu_action_add_title"
android:showAsAction="always" />
</menu>
自定義視圖中的首選項(xiàng)的活動,這將有助于創(chuàng)建自定義視圖....檢查了這一點(diǎn)....
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的PreferenceScreen 悬浮清除按钮的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌邮箱lmap服务器填什么_常用邮箱S
- 下一篇: 文献学习笔记丨转录组表达数据的生信挖掘研