果冻豆和冰淇淋三明治中的android数字选择器默认设计更改
Posted
技术标签:
【中文标题】果冻豆和冰淇淋三明治中的android数字选择器默认设计更改【英文标题】:android number picker default design changes in jelly bean and ice-cream sandwitch 【发布时间】:2013-08-02 07:48:07 【问题描述】:我创建了一个显示数字选择器的 android 应用程序,一切正常……但问题出在设计上……当我在姜饼中运行应用程序时,数字选择器看起来不错…… .但是当我在冰淇淋三明治和果冻豆中运行相同的东西时,数字选择器的设计发生了变化,如下所示。
谁能告诉我如何保留果冻豆姜饼中的默认数字选择器设计
在冰淇淋三明治和果冻豆
中运行时在姜饼
中运行时我正在使用放置数字选择器的自定义对话框,代码如下所示
import android.app.Activity;
import android.app.Dialog;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.NumberPicker;
public class QuantityChangeDialog extends Dialog implements android.view.View.OnClickListener
public Activity c;
public Dialog d;
public Button save, cancel;
NumberPicker np;
public QuantityChangeDialog(Activity a)
super(a);
// TODO Auto-generated constructor stub
this.c = a;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
setContentView(R.layout.selecteditem_dialog);
save = (Button) findViewById(R.id.btn_save);
cancel = (Button) findViewById(R.id.btn_cancel);
save.setOnClickListener(this);
cancel.setOnClickListener(this);
np = (NumberPicker) findViewById(R.id.qntypicker);
np.setMaxValue(120);
np.setMinValue(1);
np.setValue(3);
@Override
public void onClick(View v)
switch (v.getId())
case R.id.btn_save:
c.finish();
break;
case R.id.btn_cancel:
dismiss();
break;
default:
break;
dismiss();
【问题讨论】:
【参考方案1】:引用自文档
如果当前主题派生自主题,则小部件将当前值显示为可编辑的输入字段,上面有一个递增按钮,下面有一个递减按钮。 长按按钮可以快速更改当前值。点击输入字段可以输入所需的值。
您需要设置派生自 Theme
的主题,例如 Theme.NoTitleBar.Fullscreen
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_
android:layout_
android:text="@string/hello_world" />
<Button
android:id="@+id/button11"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Open" />
</RelativeLayout>
dialog.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:theme = "@style/cust_dialog"
android:layout_ >
<NumberPicker
android:id="@+id/numberPicker1"
android:layout_
android:layout_
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="64dp" />
<Button
android:id="@+id/button2"
android:layout_
android:layout_
android:layout_below="@+id/numberPicker1"
android:layout_marginLeft="20dp"
android:layout_marginTop="98dp"
android:layout_toRightOf="@+id/numberPicker1"
android:text="Cancel" />
<Button
android:id="@+id/button1"
android:layout_
android:layout_
android:layout_alignBaseline="@+id/button2"
android:layout_alignBottom="@+id/button2"
android:layout_marginRight="16dp"
android:layout_toLeftOf="@+id/numberPicker1"
android:text="Set" />
</RelativeLayout>
然后显示自定义对话框
public class MainActivity extends Activity implements NumberPicker.OnValueChangeListener
private TextView tv;
static Dialog d ;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.textView1);
tv.setOnTouchListener(new OnTouchListener()
@Override
public boolean onTouch(View v, MotionEvent event)
if (event.getAction() == MotionEvent.ACTION_DOWN)
tv.setTextColor(Color.RED);
else if (event.getAction() == MotionEvent.ACTION_UP)
// set to normal color
tv.setTextColor(0);
return true;
);
Button b = (Button) findViewById(R.id.button11);
b.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
show();
);
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal)
Log.i("value is",""+newVal);
public void show()
final Dialog d=new Dialog(this,R.style.cust_dialog);
d.setTitle("NumberPicker");
d.setContentView(R.layout.dialog);
Button b1 = (Button) d.findViewById(R.id.button1);
Button b2 = (Button) d.findViewById(R.id.button2);
final NumberPicker np = (NumberPicker) d.findViewById(R.id.numberPicker1);
np.setMaxValue(100);
np.setMinValue(0);
np.setWrapSelectorWheel(false);
np.setOnValueChangedListener(this);
b1.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
tv.setText(String.valueOf(np.getValue()));
d.dismiss();
);
b2.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
d.dismiss();
);
d.show();
样式.xml
</style>
<style name="cust_dialog" parent="@android:style/Theme.NoTitleBar.Fullscreen">
</style>
快照
【讨论】:
我已将主题设置为 Theme.NoTitleBar.Fullscreen 但我仍然无法在数字选择器中找到任何设计更改............它仍然显示如上图所示图片...... ***.com/questions/5752619/… @Denny 您也可以将主题设置为所需的活动。我刚刚尝试过,它对我有用。如果对您有帮助,您可以接受答案 是的,先生,它可以工作,但现在的问题是我的整个应用程序设计已经改变 我们可以只为数字选择器提供主题【参考方案2】:您可以将此属性添加到您的 NumberPicker 中
android:theme="@android:style/Theme.Dialog"
例如
<NumberPicker android:theme="@android:style/Theme.Dialog"
android:layout_
android:layout_ />
这会将影响仅限于数字选择器小部件,而不是整个活动页面。
【讨论】:
是的,但是如何在主题中设置选举分隔符和文本颜色? 我的意思是“选择分隔符”以上是关于果冻豆和冰淇淋三明治中的android数字选择器默认设计更改的主要内容,如果未能解决你的问题,请参考以下文章