gpt4 book ai didi

android - Actionbar 列表导航宽度 - 换行内容

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:58:56 24 4
gpt4 key购买 nike

默认情况下,在操作栏列表中,所选项目的导航宽度与最宽的项目一样宽。我想在所选项目中“wrap_content”,因为它在 google+、gmail、maps android 应用程序中。

有人知道怎么做吗?

我试图覆盖导航适配器的 getView 但它不起作用。看起来这个 View 被另一个具有最宽项目宽度的 View 包裹着。我还尝试了带有微调器的 actionbar.setCustom View ,但微调器的行为是相同的。它使用最宽的项目宽度。

感谢所有建议、链接和帮助。

Current state

Required state

最佳答案

我遇到了同样的问题。 Android 似乎会为所有项目调用 getView() 方法,最后将宽度设置为最宽项目的宽度。

所以这是我的解决方案:

  1. 在您的代码中存储当前选定的部分(例如您的示例中的部分),例如 selectedSection。实际上,您必须在 NavigationListener 的 onNavigationItemSelected() 方法中执行此操作。

  2. 覆盖 SpinnerAdapter 的 getView() 方法,始终将其内容设置为 selectedSection。

  3. 在 NavigationListener 的 onNavigationItemSelected() 方法中,将当前模式设置为 selectedSection 后,尝试调用 spinnerAdapter 的 notifyDataSetChanged() 方法。

示例代码如下:

final int selectedSection = 0;
final String sectionLabels[] = {"short sec", "long section", "looooonger section"};

final ArrayAdapter<String> arrayAdapter =
new arrayAdapter<String>(this, simple_list_item_1) {
@Override
public int getCount() {
// You need to implement here.
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.you_entry, null);
}
TextView textView = (TextView) convertView.findViewById(R.id.you_text);
// Set the text to the current section.
textView.setText(sectionLabels[selectedSection]);
}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
// You need to implement here.
}

}

actionBar.setListNavigationCallbacks(navigationAdpater,
new ActionBar.OnNavigationListener() {

@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
// Store the current section.
selectedSection = itemPosition;
navigationAdpater.notifyDataSetChanged();
return true;
}
});

关于android - Actionbar 列表导航宽度 - 换行内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14712697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com