可能重复: Android中的水平ListView? 就像Android中的许多事情一样,你不会认为这会是一个很难的问题,但是哦,高尔德,你会错的。 而且,就像Android中的许多事情一样,API甚至没有提供合理的可扩展的起点。 如果我要推出我自己的ListView,那么我只会把所有的东西拿起来,把它放在一边。 \咆哮 好吧,现在我已经完成了冒烟,让我们来谈谈问题本身。 我所需要的基本上与Gallery相似,但没有中央lockingfunction。 我真的不需要ListView的listSelector,但它是一个很好的。 大多数情况下,我可以用ScrollView的LinearLayout来做我想做的事情,但我需要来自ListAdapter的子视图,而且我真的希望有一个视图回收器。 我真的不想写任何布局代码。 我偷看了一些这些类的源代码… 图库:如果我重写大部分'onXyz'方法,就可以使用图库,复制所有的源代码,但不要调用scrollIntoSlots() 。 但是我确信,如果我这样做,我会遇到一些无法访问或其他不可预见的后果的成员字段。 AbsSpinner:由于mRecycler字段是包私人的,我怀疑我可以扩展这个类。 AbsListView:它看起来像这个类只适用于垂直滚动,所以没有帮助。 AdapterView:我从来没有直接扩展这个类。 如果你告诉我这很容易做,而且很容易推出我自己的RecycleBin ,我会非常怀疑,但我会给它一个。 我想我可以复制AbsSpinner和Gallery来得到我想要的…希望这些类不使用我无法访问的一些package-privatevariables。 你们都认为这是一个很好的做法吗? 有没有人有任何教程或第三方解决scheme,可能使我在正确的方向吗? 更新: 我迄今为止唯一find的解决scheme就是自己做。 由于提出这个问题,我重写了AdapterView并从头开始实现我自己的“HorizontalListView”。 要真正覆盖图库的中心lockingfunction的唯一方法是重写私有scrollIntoSlots方法,我相信这将需要在运行时生成一个子类。 如果你敢于这样做,这可以说是最好的解决scheme,但我不想依赖可能改变的无证方法。 下面的Swathi EPbuild议我给Gallery一个OnTouchListener并重写滚动function。 如果你不关心在列表中是否有支持,或者如果可以在videoanimation结束时将视图捕捉到中心,那么这对你来说是有效的! 然而,最终仍然不能移除中央lockingfunction而不去除支撑。 我问你,什么样的名单不投掷? 所以,唉,这不适合我。 :-(但如果你对这种方法感兴趣,请继续阅读… 为了得到我想要的,我还必须对Swathi的代码做一些补充。 在GestureListener.onTouch ,除了委托给手势检测器之外,我还必须为ACTION_UP和ACTION_CANCEL事件返回true。 这成功地禁用了中央lockingfunction,但它也禁用了投掷。 我能够通过将自己的GestureListener委托给Gallery的onFling方法来重新启用onFling 。 如果您想尝试一下,请进入ApiDemos示例代码,并用以下代码replaceGallery1.java类: import com.example.android.apis.R; import android.app.Activity; import android.content.Context; import android.content.res.TypedArray; import android.os.Bundle; import android.view.ContextMenu; import […]
我有两个活动A和B.我想有缩小animation时,活动A调用B和最大化animation时,活动B调用A.我不需要这个animationXML文件。 当我们在Android中调用另一个Activity时,会给出它的默认animation,然后调用缩小animation。 我想要的是,默认animation不应该发生,我想要的animation应该发生。 我们可以在调用另一个活动时给予animation吗?
我正在使用Android兼容性库来实现片段,并扩展了布局示例,以便片段包含一个可以closures另一个片段的button。 在左侧的select窗格中,我有5个可选项目 – ABCDE 。 每个在细节窗格中加载一个片段(通过FragmentTransaction:replace ) – abcde 现在我已经扩展了片段e以包含一个button,在另一个片段e1也加载了一个button。 我已经完成了片段e的onClick方法,如下所示: FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); ft.replace(R.id.details_frag, newFrag); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.addToBackStack(null); ft.commit(); 如果我做出以下select: E – e – e1 – D – E 然后片段e在详细信息窗格中。 这很好,我想要的。 但是,如果我点击backbutton,它什么都不做。 我必须点击两次,因为e1仍然在堆栈中。 此外,点击后,我在onCreateView中得到一个空指针exception: 为了“解决”这个问题,我selectABCDE时添加了以下内容: FragmentManager fm = getActivity().getSupportFragmentManager(); for(int i = 0; i < fm.getBackStackEntryCount(); ++i) { fm.popBackStack(); } 只是想知道这是否是正确的解决scheme,或者我应该做一些不同的事情?
什么是从file:转换最简单的方法file: android.net.Uri到Android中的File ? 试过以下,但它不起作用: final File file = new File(Environment.getExternalStorageDirectory(), "read.me"); Uri uri = Uri.fromFile(file); File auxFile = new File(uri.toString()); assertEquals(file.getAbsolutePath(), auxFile.getAbsolutePath());
我在我的应用程序中有3个项目的行动栏。 由于空间问题,只能显示2个,所以我希望第一个显示,其余的显示在溢出。 但实际上只显示前两项,并且没有可检测的溢出。 这里是相关的代码:list_menu.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_insert" android:icon="@android:drawable/ic_menu_add" android:title="@string/menu_insert" android:showAsAction="ifRoom|withText"/> <item android:id="@+id/menu_call" android:icon="@android:drawable/ic_menu_call" android:title="@string/menu_call" android:showAsAction="ifRoom|withText"/> <item android:id="@+id/menu_agenda" android:icon="@android:drawable/ic_menu_agenda" android:title="@string/menu_agenda" android:showAsAction="ifRoom|withText"/> </menu> Activity.java public boolean onCreateOptionsMenu(Menu menu) { MenuInflater mi = getMenuInflater(); mi.inflate(R.menu.list_menu, menu); return true; } 谢谢!
我正在尝试将Android设备上的实时麦克风audiostream式传输到Java程序。 我开始发送两个Android设备之间的现场audio,以确认我的方法是正确的。 接收设备上几乎没有任何延迟,audio可以被完美地听到。 接下来,我将相同的audiostream发送到一个小型的Java程序,并validation数据是否正确发送。 现在我想要做的就是对这些数据进行编码,并以某种方式在运行Java程序的服务器上播放它。 我宁愿使用HTML5或JavaScript在networking浏览器中播放它,但我愿意使用VLC等替代方法。 这里是发送现场麦克风audio的Android应用程序的代码 public class MainActivity extends Activity { private Button startButton,stopButton; public byte[] buffer; public static DatagramSocket socket; AudioRecord recorder; private int sampleRate = 44100; private int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO; private int audioFormat = AudioFormat.ENCODING_PCM_16BIT; int minBufSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat); private boolean status = true; @Override protected void onCreate(Bundle […]
我怎样才能旋转Android模拟器显示在横向模式下看到它?
是否可以在textview上绘制边框?
我有一个关于新的Android棉花糖版本的问题: 通过意图或类似的方式显示特定应用程序的权限屏幕是否可行? 可以使用下面的代码显示应用程序设置 – 是否有直接打开权限屏幕的模拟解决scheme? startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.fromParts("package", getPackageName(), null))); 我已经做了一些这方面的研究,但是我找不到一个合适的解决scheme – 我会感谢每一个帮助!
我创build了一个小型testing应用程序,代表我的问题。 我使用ActionBarSherlock来实现(Sherlock)片段的选项卡。 我的代码: TestActivity.java public class TestActivity extends SherlockFragmentActivity { private ActionBar actionBar; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setupTabs(savedInstanceState); } private void setupTabs(Bundle savedInstanceState) { actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); addTab1(); addTab2(); } private void addTab1() { Tab tab1 = actionBar.newTab(); tab1.setTag("1"); String tabText = "1"; tab1.setText(tabText); tab1.setTabListener(new TabListener<MyFragment>(TestActivity.this, "1", MyFragment.class)); actionBar.addTab(tab1); } private […]