我想为我的应用创建custom Spinner Dialog
。我找到了this& this。
两者都很好。我根据要求更新了我的代码。当用户点击微调器时,我正在使用选择器文件来更改对话框背景视图。
我的代码工作正常,但问题出在对话框视图中。它传播的宽度,但我想根据一些固定大小得到。
我的Spinner视图的当前输出如下: -
但我需要它跟随: -
Spinner_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/spinner_popup" // it's my selector file
android:orientation="horizontal" >
<TextView
android:id="@+id/Genere_name"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginLeft="5dp"
android:ellipsize="marquee"
android:gravity="center_vertical"
android:singleLine="true"
android:textColor="@android:color/black"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
spinner_popup.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/popup_header" android:state_selected="true"/>
<item android:drawable="@android:color/transparent" android:state_enabled="true"/>
<item android:drawable="@drawable/popup_header" android:state_pressed="true"/>
<item android:drawable="@drawable/popup_bg_box" android:state_enabled="false" android:state_focused="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
Main_spinner_view
<LinearLayout
android:id="@+id/search_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/search_bg"
android:orientation="horizontal"
android:weightSum="3" >
<Spinner
android:id="@+id/Search_Spinner"
android:layout_width="95dp"
android:layout_height="30dp"
android:layout_gravity="left|center_vertical|center_horizontal"
android:layout_marginLeft="2dp"
android:layout_weight="1.2"
android:background="@drawable/search_dropdown" />
<EditText
android:id="@+id/Search_EDT"
android:layout_width="170dp"
android:layout_height="30dp"
android:layout_gravity="center|center_horizontal|center_horizontal"
android:layout_marginLeft="3dp"
android:layout_weight="1.5"
android:background="@drawable/search_textfield"
android:hint="Search By Free Text"
android:inputType="textPersonName"
android:padding="5dp"
android:textSize="16sp" >
</EditText>
<Button
android:id="@+id/Search_GO"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="right|center_horizontal|center_vertical"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:layout_weight="0.3"
android:background="@drawable/search_icon"
android:textColor="@android:color/white" />
</LinearLayout>
我在调用我的微调器适配器
Search_Spinner.setAdapter(new MyAdapter(GridViewActivity.this,
R.layout.spinner_item, Search_Category_List));
我认为java代码不是必需的,但我仍然在这里粘贴,
public class MyAdapter extends ArrayAdapter<String>
{
public MyAdapter(Context context, int textViewResourceId,
ArrayList<String> objects)
{
super(context, textViewResourceId, objects);
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent)
{
return getCustomView(position, convertView, parent);
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
return getCustomView(position, convertView, parent);
}
public View getCustomView(int position, View convertView,
ViewGroup parent)
{
LayoutInflater inflater = getLayoutInflater();
View row = inflater.inflate(R.layout.spinner_item, parent, false);
TextView label = (TextView) row.findViewById(R.id.Genere_name);
spinner_text = Typeface.createFromAsset(getAssets(), "desc.ttf");
label.setTypeface(spinner_text);
label.setText(Search_Category_List.get(position));
return row;
}
}
答案 0 :(得分:0)
您可以尝试将textview的权重设置为0.3,将宽度设置为0dip。您还可以尝试在textView上设置maxWidth。此外,必须为textView设置背景颜色,而不是为微调器项目设置背景颜色,因为宽度将是textView的宽度。
你也可以尝试使用setDropDownWidth,但你必须将minApiLevel设置为16。您可以参考以获取更多信息:http://developer.android.com/reference/android/widget/Spinner.html#attr_android:dropDownVerticalOffset
答案 1 :(得分:0)
在LinearLayout中使用android:layout_width =“wrap_content”而不是android:layout_width =“fill_parent”
答案 2 :(得分:0)
尝试为此
创建transperent活动请参阅以下代码以获取帮助。 首先删除Spinner控件并将按钮放在那里。 将按钮背景设置为像微调器一样,它显示为像微调器一样。
按钮上的单击使用此代码
Intent bookIntent = new Intent();
bookIntent.setClass(MusicAppActivity.this, OptionActivity.class);
bookIntent.putExtra("cat", stockArr);
startActivityForResult(bookIntent, 1);
bookIntent.putExtra("cat", stockArr);
从这里传递意图中的数组 这是您想要在新的transperent活动中显示的数组。
OptionActivity
现在创建一个名为OptionActivity的transperent活动
在该transperent活动中创建列表。 并设置活动的宽度和高度
透明活动代码在
之下public class OptionActivity extends Activity {
ListView l;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
Intent intent = getIntent();
String[] myStrings = intent.getStringArrayExtra("cat");
l = (ListView) findViewById(R.id.optionList);
l.setAdapter(new ArrayAdapter<String>(this, R.layout.headerlist,R.id.text1, myStrings));
l.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String book = l.getAdapter().getItem(position).toString();
Intent returnIntent = new Intent();
returnIntent.putExtra("SelectedBook",book);
setResult(RESULT_OK,returnIntent);
finish();
}
});
}
}
list.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/optionFinish"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/my_custom_background"
android:layout_marginTop="50dp"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/headerbg" >
<TextView
android:id="@+id/viewTournament"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:freezesText="true"
android:gravity="center_vertical|center_horizontal"
android:marqueeRepeatLimit="marquee_forever"
android:paddingLeft="15dip"
android:paddingRight="40dip"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="Catagory"
android:textColor="@android:color/white" />
<!-- <ImageButton
android:id="@+id/optionBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@android:color/transparent"
android:padding="5dip"
android:src="@drawable/options" /> -->
</RelativeLayout>
<ListView
android:id="@+id/optionList"
android:layout_width="200dip"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:cacheColorHint="#00000000"
android:background="@android:color/white"
android:paddingLeft="2dip"
android:paddingRight="2dip" >
</ListView>
</LinearLayout>