Raj*_*Raj 7 android android-widget
我想SlidingDrawer在我的应用程序中使用.但我必须隐藏handle并且必须显示20%的内容在SlidingDrawer关闭时可见.此外,我想分配所有的滑动(触摸或拖动)的行动handle来content.如果有人为此解决问题,请帮助我.
请参考我尝试过的以下代码段.
<View
android:id="@id/handle"
android:layout_width="0dip"
android:layout_height="fill_parent" />
<LinearLayout
android:id="@id/content"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sliding_drawer" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sliding_drawer" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sliding_drawer" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这是我的活动:
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.SlidingDrawer;
import android.widget.SlidingDrawer.OnDrawerCloseListener;
import android.widget.SlidingDrawer.OnDrawerOpenListener;
public class SlidingDrawerActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final SlidingDrawer drawer = (SlidingDrawer) findViewById(R.id.drawer);
drawer.setOnDrawerCloseListener(new OnDrawerCloseListener() {
public void onDrawerClosed() {
// TODO Auto-generated method stub
drawer.setBackgroundColor(Color.BLACK);
}
});
drawer.setOnDrawerOpenListener(new OnDrawerOpenListener() {
public void onDrawerOpened() {
// TODO Auto-generated method stub
drawer.setBackgroundColor(Color.BLUE);
}
});
View content = drawer.getContent();
content.setClickable(true);
content.setTouchDelegate(drawer.getHandle().getTouchDelegate());
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我可以隐藏handleby设置width=0dip,但无法知道如何在关闭时显示20%的内容SlidingDrawer并将操作设置Content为SlidingDrawer.
我尝试获取touchDelegate句柄并将其设置为Content,但它不起作用.请帮我解决这个问题.
我认为当前的 SlidingDrawer 不可能实现这一点,除非您正在处理可以切割并分成 20% 的东西。如果您查看 SlidingDrawer 的源代码,open()您会发现它调用了一个私有方法openDrawer(). 这是它的作用:
private void openDrawer() {
moveHandle(EXPANDED_FULL_OPEN);
mContent.setVisibility(View.VISIBLE);
if (mExpanded) {
return;
}
mExpanded = true;
if (mOnDrawerOpenListener != null) {
mOnDrawerOpenListener.onDrawerOpened();
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,在手柄开始移动之前,内容(“抽屉”)是不可见的。抽屉移动时似乎没有钩子,只有在抽屉开始或结束时才钩子,因此您无法动态更新手柄或抽屉中的内容。
如果您正在处理图像,您可以将其切成两部分:20% 和 80%。但由于您正在使用 3 个 TextView,因此看起来这不是一个选项。
鉴于我认为一个选择是采用 SlidingDrawer 的源代码并创建您自己的类。这样您就可以完全控制绘图的处理方式,但仍然能够重用所有侦听器。这是来源的链接: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/widget/SlidingDrawer.java
| 归档时间: |
|
| 查看次数: |
4257 次 |
| 最近记录: |