我的资产文件夹中有一个ttf字体文件.我知道如何将它用于textviews:
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
textview1.setTypeface(externalFont);
Run Code Online (Sandbox Code Playgroud)
我已经定义了在我自己的xml文件中查找我的微调器文本(如在android中的usuall):
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:textColor="#ffffff"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee" />
Run Code Online (Sandbox Code Playgroud)
我只是无法从代码中引用此textview,我总是得到空指针异常.我尝试过:
TextView spinner_text=(TextView)findViewById(R.id.text1);
spinner_text.setTypeface(externalFont);
Run Code Online (Sandbox Code Playgroud)
即使我自己的xml中定义的微调器文本,是否可以选择我的外部字体?
谢谢.
这有效:
String [] items = new String[2];
items[0]="Something1";
items[1]="Something2";
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.spinaca, items) {
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
((TextView) v).setTypeface(externalFont);
return v;
}
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View v =super.getDropDownView(position, convertView, …Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,我需要更改微调器背景布局以匹配背景颜色.我研究并发现我需要创建一个9补丁图像.我已经完成了创建9补丁图像并在应用程序中使用但它看起来比普通微调器更大,而且我也看不到微调器中的下拉按钮.
如果你们从开始为Spinner创建9补丁图像并在应用程序中使用它,我很高兴为我提供了一个明确的教程.

微调器的代码
<Spinner
android:id="@+id/spnIncredientone"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/txtMixtureTitle"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:background="@drawable/spinner_background"
android:prompt="@string/selectmixture" />
Run Code Online (Sandbox Code Playgroud) 我找到的解决方案更改了微调器下拉图标,其中所有:
1.创建一个自定义drawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="true" android:state_pressed="false" />
<item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="true" android:state_pressed="true" />
<item android:drawable="@drawable/vector_drawable_ic_dropdown_black" android:state_focused="false" android:state_pressed="true" />
<item android:drawable="@drawable/vector_drawable_ic_dropdown_black" />
</selector>
Run Code Online (Sandbox Code Playgroud)
2.将drawable设置为微调器背景:
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:background="@drawable/custom_spinner_icon"
android:gravity="center"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:textColor="@color/textcolorprimary" />
Run Code Online (Sandbox Code Playgroud)
结果是:
正如您所看到的,这不是一个可接受的解决方案,因为图标需要右对齐而不是拉伸.
我该怎么做才能使图标不拉伸并对齐?
编辑
由于没有可行的解决方案,我想我必须指出我的问题.这就是我的Spinner使用标准主题的样子:
<Spinner
android:id="@+id/products_download_spinner_language"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:gravity="center"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:textColor="@color/textcolorprimary"
android:theme="@android:style/Theme.Holo.Light.DarkActionBar" />
Run Code Online (Sandbox Code Playgroud)
而我想要的一切(我猜这真的不多)正在改变箭头.我不希望显示右下角的箭头,我希望这个箭头垂直居中显示在右边:
到目前为止我尝试的每个解决方案:
根本没工作.他们有拉伸的图标或底线缺失或其他东西完全错误.我只想要另一支箭.
我想设计一个简单的微调器,如下所示:
下面是我的代码:sinnerBg.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_window_focused="false" android:state_enabled="true"
android:drawable="@android:color/black" />
<item>
<layer-list>
<item>
<shape>
<solid android:color="#ffffff" />
<stroke android:width="1dp" android:color="#000000" />
<padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" />
</shape>
</item>
<item >
<bitmap android:gravity="right" android:src="@drawable/arrow_down" />
</item>
</layer-list>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
在 style.xml 中:
<style name="spinner_style">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:background">@drawable/spinnerBg</item>
<item name="android:layout_margin">10dp</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingRight">20dp</item>
<item name="android:paddingTop">5dp</item>
<item name="android:paddingBottom">5dp</item>
<item name="android:popupBackground">#000000</item>
<item name="backgroundTint">#ffffff</item>
<item name="android:textColor">#000000</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我的 axml 文件中的微调器:
<Spinner
android:layout_width="64.0dp"
android:layout_height="wrap_content"
android:layout_weight="0.75"
android:ems="10"
android:spinnerMode="dropdown"
android:layout_marginRight="6.0dp"
android:id="@+id/PIC"
android:layout_marginTop="12.5dp"
style="@style/spinner_style" /> …Run Code Online (Sandbox Code Playgroud) 我想在android中改变微调器的外观,我希望它对所有设备都是一样的.我试图做同样的事情,但未能这样做.如果我使用Tag,我无法自定义它.我正在添加我想要的图像截图.