小编Per*_*man的帖子

如何在EditText中隐藏下划线

如何隐藏EditText下划线(两端带有小衬线的提示行)?

可能有更好的方法来做我想要的:我有一个带有EditText的布局.通常,这显示在用户可以点击它并开始输入或编辑文本的位置.

但是,有时我想使用相同的布局(简化其他逻辑)以只读方式显示相同的数据.我希望演示文稿类似 - 它应该具有相同的高度和相同的字体,但没有下划线.

作为一种权宜之计,我将通过删除EditText并替换TextView来实现这一点.我认为这会产生预期的结果,但这似乎是一种迂回的做法,通过改变属性来做一些应该很容易做到的事情.

android textview android-edittext

444
推荐指数
14
解决办法
28万
查看次数

动态添加和删除视图到viewpager

(我想出了一个解决方案 - 请在下面的答案部分看到我的帖子.)

在我的应用程序中,用户将从他的数据的单个视图开始.我想添加一个ViewPager,并允许用户根据需要添加更多视图.我该怎么做呢?(我不想使用FragmentPagerAdapter.)

我已经阅读了无数的帖子和概述,但我仍然遗漏了一些东西.这是我认为我理解的:

MainActivity创建一个ViewPager和PagerAdapter:

ViewPager pager = null;
MainPagerAdapter adapter = null;
public void onCreate (Bundle savedInstanceState)
{
  super.onCreate (savedInstanceState);
  pager = new ViewPager (this);
  setContentView (pager);

  adapter = new MainPagerAdapter();
  pager.setAdapter (adapter); 

  View v0 = code_to_create_initial_view();
  adapter.add (v0, 0);      
}
Run Code Online (Sandbox Code Playgroud)

使用PagerAdapter提供视图集.为此,我似乎需要添加和删除视图的方法,就像这样; 显然需要更多的东西来告诉ViewPager的内容已经改变以及如何显示更改:

class MainPagerAdapter extends PagerAdapter
{
  // This holds all the currently displayable views, in order from left to right.
  private ArrayList<View> views = new ArrayList<View>();

  public void addView (View v, int position)
  {
    views.add (position, …
Run Code Online (Sandbox Code Playgroud)

android swipe android-viewpager

160
推荐指数
2
解决办法
17万
查看次数

需要处理未捕获的异常并发送日志文件

更新:请参阅下面的"已接受"解决方案

当我的应用创建未处理的异常,而不是简单地终止时,我想首先让用户有机会发送日志文件.我意识到在获得随机异常后做更多的工作是有风险的,但是,嘿,最糟糕的是应用程序完成崩溃并且日志文件没有被发送.结果比我想象的更棘手:)

什么有效:(1)捕获未捕获的异常,(2)提取日志信息并写入文件.

什么不起作用:(3)开始发送电子邮件的活动.最终,我还有另一项活动要求用户的许可.如果我让电子邮件活动正常工作,我不会对另一方感到麻烦.

问题的关键是我的Application类中捕获了未处理的异常.由于这不是一个Activity,因此如何使用Intent.ACTION_SEND启动活动并不明显.也就是说,通常在启动一个活动时,调用startActivity并使用onActivityResult恢复.Activity支持这些方法,但Application不支持.

有关如何做到这一点的任何建议?

以下是一些代码剪辑作为入门指南:

public class MyApplication extends Application
{
  defaultUncaughtHandler = Thread.getDefaultUncaughtExceptionHandler();
  public void onCreate ()
  {
    Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler()
    {
      @Override
      public void uncaughtException (Thread thread, Throwable e)
      {
        handleUncaughtException (thread, e);
      }
    });
  }

  private void handleUncaughtException (Thread thread, Throwable e)
  {
    String fullFileName = extractLogToFile(); // code not shown

    // The following shows what I'd like, though it won't work like this.
    Intent intent = new Intent (Intent.ACTION_SEND);
    intent.setType ("plain/text");
    intent.putExtra (Intent.EXTRA_EMAIL, new …
Run Code Online (Sandbox Code Playgroud)

android exception-handling logcat

107
推荐指数
4
解决办法
9万
查看次数

OptionsMenu中的SearchView不是全宽

当用户点击搜索图标时,我有一个可在我的OptionsMenu中扩展的SearchView.但是,它仅在其他OptionsMenu图标中的可用空间内扩展.在宽屏幕上这很好,但是在狭窄的空间内,只有在搜索框中显示5-10个字符的空间.我希望它覆盖其他图标,例如它适用于Android Contacts应用程序.目前,我正在建设targetSdkVersion = 17.希望我错过了一些简单的东西:)

(注意后来添加:到目前为止,我发现可行的唯一解决方案是在我想扩展搜索图标时隐藏所有菜单图标.这在概念上很简单.但它很混乱,因为在恢复隐藏的图标时,必须要去通过一堆逻辑来确定哪些要恢复,或保持状态变量等等)

这是OptionsMenu的项目xml:

<item
  android:id="@+id/menu_search_shallow"
  android:title="Search Current Folder"
  android:icon="@drawable/ic_btn_search"
  android:showAsAction="always|collapseActionView"
  android:actionViewClass="android.widget.SearchView" />
Run Code Online (Sandbox Code Playgroud)

我的主要活动代码中也有:

@Override
public boolean onCreateOptionsMenu (Menu menu)
{
  getMenuInflater().inflate(R.menu.nav_menu, menu);
  this.optionsMenu = menu;

  MenuItem searchItem = menu.findItem (R.id.menu_search_shallow);
  searchItem.setOnActionExpandListener (this);
  SearchView searchView = (SearchView) searchItem.getActionView();
  searchView.setQueryHint (getString (R.string.search_shallow_hint));

  searchItem = menu.findItem (R.id.menu_search_deep);
  searchItem.setOnActionExpandListener (this);
  searchView = (SearchView) searchItem.getActionView();
  searchView.setQueryHint (getString (R.string.search_deep_hint));
}
Run Code Online (Sandbox Code Playgroud)

@Override
public boolean onMenuItemActionExpand(MenuItem item) 
{
  SearchView searchView = (SearchView) item.getActionView();
  searchView.setOnQueryTextListener (this);
  return true;
}

@Override
public boolean onMenuItemActionCollapse(MenuItem item) 
{ …
Run Code Online (Sandbox Code Playgroud)

android options-menu searchview

36
推荐指数
4
解决办法
3万
查看次数

片段内的findViewById

有没有办法在片段范围内通过id查找视图?我正在使用一系列片段来呈现专门的列表.片段从布局加载,因此它们的小部件都具有相同的ID.

我想我可以找到一种方法,在创建期间(或之后)为每个小部件提供自定义ID.但是,如果我能以某种方式将findViewById限制在片段的范围内,那将会更好.

android android-fragments findviewbyid

24
推荐指数
3
解决办法
6万
查看次数

如何强制操作栏溢出图标显示

我想强制溢出图标始终显示在操作栏中(假设有溢出项).在带有菜单按钮的型号上,有时不会出现溢出图标,用户必须点击设备菜单按钮才能获得其余的操作菜单项.用户继续抱怨这一点.

请注意,对于上下文菜单,无论设备是否具有内置菜单按钮,都会始终显示溢出图标.

我意识到强制溢出图标出现在操作栏中会复制"物理"图标的功能.您可能会认为违反了Androids设计指南.但在我看来,用户赢了.他们说这令人困惑,我相信他们是对的.

android android-actionbar

23
推荐指数
2
解决办法
3万
查看次数

android studio:发布apk没有签名

*自从最初发布以来,我已经改写了帖子*

当我尝试运行一个刚构建的版本apk时,我收到一个错误"你当前选择的版本的apk没有签名." 这是在"编辑配置"弹出窗口中.这是我的步骤:

  1. 在Build Variants选项卡中,选择"release"
  2. 在菜单中,选择Build - > Generate Signed APK
  3. 在弹出窗口中,填写密钥库和密码的字段.
  4. 在第二个面板中,将目标文件夹更改为...\app\build\outputs\apk(请参阅下面的注释*)
  5. 观察工作室右上方的通知:APK(s)已成功生成.
  6. 在菜单中,单击"运行" - >"运行应用程序".
  7. 我得到一个"编辑配置"弹出窗口,其中包含错误"您当前所选变体的apk ...未签名.

那么,为什么这个错误呢?生成的APK似乎有效.我已成功将其发布到Android商店(仅限alpha测试)并验证堆栈转储是否已被混淆.

我不能做的是将它(上面的步骤6)下载到我的设备.我想这没关系,因为我可以下载调试版本.

(*)Android Studio将发布apk的输出默认为更高的,可能更方便的目录.但是我发现当它们分散时很难管理生成文件的一致性,所以我更喜欢在一个地方生成所有apks.

release android-studio

16
推荐指数
4
解决办法
2万
查看次数

防止将自定义mimetype拖放到EditText

我有一个自定义mime类型,我打算用它来拖放应用程序中的应用程序对象.这似乎工作,但我发现EditText字段也接受放置操作.我不希望这种情况发生.

首先,我已经定义了如下的custome mime类型:

public static final String MIME_TYPE_MYNODE = "com.example.mockup/mynode";
Run Code Online (Sandbox Code Playgroud)

然后,在源对象的onTouch处理程序中,我有:

  @Override
  //-----------------------------------------------------------------------------
  public boolean onTouch (View v, MotionEvent e)
  {
    ...
    else if (e.getAction() == MotionEvent.ACTION_MOVE)
    {
      String[] mimeTypes = {MIME_TYPE_MYNODE};
      ClipData data = new ClipData ("Task Tamer Note", mimeTypes, new ClipData.Item ("unused"));
      View.DragShadowBuilder shadow = new View.DragShadowBuilder(this);
      Object localState = v;
      startDrag (data, shadow, localState, 0);
      return false;
    }
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

当我"删除"EditText小部件时,它会在文本区域中插入"unused".我怎么能阻止这个?谢谢.

android drag-and-drop mime-types android-edittext

10
推荐指数
2
解决办法
2403
查看次数

如何检测actionmode是否已经存在

我在视图中有几个小部件,每个小部件都需要自己的ActionMode.我看到当用户点击操作栏之外时,ActionMode不会自动解除.因此,用户很容易为一个控件启动ActionMode,然后点击(在我的情况下为longclick)另一个控件,并在第一个控件上堆叠第二个ActionBar.这会导致编程逻辑严重破坏.

我可以使用活动级别的成员变量跟踪当前的ActionMode,如果需要新的成员变量,则忽略当前的ActionMode.但是,这使得我的代码在阅读和维护时变得混乱.而且,当用户点击操作栏之外的任何内容时,我宁愿立即将其解雇.

有关处理此问题的好方法的任何建议吗?

android dismiss android-actionbar

8
推荐指数
1
解决办法
4434
查看次数

如何查找MotionEvent ACTION_CANCEL的源视图

如何找到导致MotionEvent ACTION_CANCEL的视图?我有一个接收ACTION_CANCEL的视图"A",我不希望这种情况发生.在某处,视图"B"正在"消耗"MotionEvent.我希望有办法找出谁是"B",这样我才能解决这个错误的问题.

我已经尝试查看我的代码中的各种OnTouchEvent()和OnInterceptTouchEvent()处理程序,但还没有找到罪魁祸首.

我还在有问题的ACTION_CANCEL上设置了一个断点,但是我无法识别可能代表"B"的MotionEvent中的任何内容.

android motionevent

8
推荐指数
2
解决办法
1720
查看次数